@visactor/vrender 0.15.0-alpha.16 → 0.15.0-alpha.18
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.
- package/cjs/animate/animate.d.ts +1 -0
- package/cjs/animate/animate.js +3 -0
- package/cjs/animate/animate.js.map +1 -1
- package/cjs/animate/timeline.d.ts +1 -1
- package/cjs/animate/timeline.js +2 -2
- package/cjs/animate/timeline.js.map +1 -1
- package/cjs/canvas/contributions/browser/context.d.ts +1 -0
- package/cjs/common/contribution-provider.d.ts +1 -0
- package/cjs/common/contribution-provider.js +7 -2
- package/cjs/common/contribution-provider.js.map +1 -1
- package/cjs/common/enums.d.ts +4 -2
- package/cjs/common/enums.js +3 -2
- package/cjs/common/enums.js.map +1 -1
- package/cjs/core/contributions/env/base-contribution.d.ts +11 -1
- package/cjs/core/contributions/env/base-contribution.js +22 -1
- package/cjs/core/contributions/env/base-contribution.js.map +1 -1
- package/cjs/core/contributions/env/browser-contribution.d.ts +11 -2
- package/cjs/core/contributions/env/browser-contribution.js +66 -0
- package/cjs/core/contributions/env/browser-contribution.js.map +1 -1
- package/cjs/core/contributions/textMeasure/layout.js +1 -1
- package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
- package/cjs/core/contributions/window/base-contribution.d.ts +11 -5
- package/cjs/core/contributions/window/base-contribution.js +10 -0
- package/cjs/core/contributions/window/base-contribution.js.map +1 -1
- package/cjs/core/contributions/window/browser-contribution.d.ts +11 -0
- package/cjs/core/contributions/window/browser-contribution.js +33 -2
- package/cjs/core/contributions/window/browser-contribution.js.map +1 -1
- package/cjs/core/global.d.ts +11 -1
- package/cjs/core/global.js +18 -0
- package/cjs/core/global.js.map +1 -1
- package/cjs/core/graphic-utils.d.ts +2 -0
- package/cjs/core/graphic-utils.js +13 -0
- package/cjs/core/graphic-utils.js.map +1 -1
- package/cjs/core/layer.js +6 -6
- package/cjs/core/layer.js.map +1 -1
- package/cjs/core/stage.d.ts +13 -4
- package/cjs/core/stage.js +54 -25
- package/cjs/core/stage.js.map +1 -1
- package/cjs/core/window.d.ts +6 -0
- package/cjs/core/window.js +10 -1
- package/cjs/core/window.js.map +1 -1
- package/cjs/event/event-manager.js +8 -8
- package/cjs/event/event-manager.js.map +1 -1
- package/cjs/event/event-system.js.map +1 -1
- package/cjs/event/federated-event/pointer-event.d.ts +1 -0
- package/cjs/event/federated-event/pointer-event.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-down.d.ts +12 -0
- package/cjs/graphic/builtin-symbol/arrow2-down.js +30 -0
- package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -0
- package/cjs/graphic/builtin-symbol/arrow2-left.js +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-right.js +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-up.d.ts +12 -0
- package/cjs/graphic/builtin-symbol/arrow2-up.js +30 -0
- package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -0
- package/cjs/graphic/builtin-symbol/close.d.ts +13 -0
- package/cjs/graphic/builtin-symbol/close.js +33 -0
- package/cjs/graphic/builtin-symbol/close.js.map +1 -0
- package/cjs/graphic/builtin-symbol/index.d.ts +1 -1
- package/cjs/graphic/builtin-symbol/index.js +2 -2
- package/cjs/graphic/builtin-symbol/index.js.map +1 -1
- package/cjs/graphic/builtin-symbol/line-h.d.ts +13 -0
- package/cjs/graphic/builtin-symbol/line-h.js +32 -0
- package/cjs/graphic/builtin-symbol/line-h.js.map +1 -0
- package/cjs/graphic/builtin-symbol/line-v.d.ts +13 -0
- package/cjs/graphic/builtin-symbol/line-v.js +32 -0
- package/cjs/graphic/builtin-symbol/line-v.js.map +1 -0
- package/cjs/graphic/builtin-symbol/utils.d.ts +13 -5
- package/cjs/graphic/builtin-symbol/utils.js +23 -9
- package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
- package/cjs/graphic/config.js +8 -4
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/constants.d.ts +22 -0
- package/cjs/graphic/constants.js +20 -2
- package/cjs/graphic/constants.js.map +1 -1
- package/cjs/graphic/graphic.d.ts +4 -1
- package/cjs/graphic/graphic.js +49 -21
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.js +1 -1
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/index.d.ts +1 -0
- package/cjs/graphic/index.js +13 -13
- package/cjs/graphic/index.js.map +1 -1
- package/cjs/graphic/richtext/utils.d.ts +1 -1
- package/cjs/graphic/richtext/utils.js +1 -1
- package/cjs/graphic/richtext/utils.js.map +1 -1
- package/cjs/graphic/symbol.d.ts +2 -1
- package/cjs/graphic/symbol.js +27 -4
- package/cjs/graphic/symbol.js.map +1 -1
- package/cjs/graphic/text.js +33 -23
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/graphic/tools.d.ts +3 -2
- package/cjs/graphic/tools.js +58 -3
- package/cjs/graphic/tools.js.map +1 -1
- package/cjs/graphic/wrap-text.js +10 -8
- package/cjs/graphic/wrap-text.js.map +1 -1
- package/cjs/index.d.ts +3 -1
- package/cjs/index.js +3 -3
- package/cjs/index.js.map +1 -1
- package/cjs/interface/animate.d.ts +3 -1
- package/cjs/interface/animate.js.map +1 -1
- package/cjs/interface/core.d.ts +1 -0
- package/cjs/interface/core.js.map +1 -1
- package/cjs/interface/global.d.ts +25 -1
- package/cjs/interface/global.js.map +1 -1
- package/cjs/interface/graphic/image.d.ts +1 -0
- package/cjs/interface/graphic/image.js.map +1 -1
- package/cjs/interface/graphic/symbol.d.ts +3 -2
- package/cjs/interface/graphic/symbol.js.map +1 -1
- package/cjs/interface/graphic/text.d.ts +1 -0
- package/cjs/interface/graphic/text.js.map +1 -1
- package/cjs/interface/graphic.d.ts +27 -3
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/interface/picker.d.ts +9 -1
- package/cjs/interface/picker.js.map +1 -1
- package/cjs/interface/render.d.ts +1 -0
- package/cjs/interface/render.js.map +1 -1
- package/cjs/interface/stage.d.ts +10 -3
- package/cjs/interface/stage.js.map +1 -1
- package/cjs/interface/window.d.ts +12 -0
- package/cjs/interface/window.js.map +1 -1
- package/cjs/jsx/graphicType.d.ts +172 -0
- package/cjs/jsx/graphicType.js +133 -0
- package/cjs/jsx/graphicType.js.map +1 -0
- package/cjs/jsx/index.d.ts +2 -0
- package/cjs/jsx/index.js +21 -0
- package/cjs/jsx/index.js.map +1 -0
- package/cjs/jsx/jsx-classic.d.ts +3 -0
- package/cjs/jsx/jsx-classic.js +58 -0
- package/cjs/jsx/jsx-classic.js.map +1 -0
- package/cjs/picker/canvas-picker-service.d.ts +2 -2
- package/cjs/picker/canvas-picker-service.js +20 -3
- package/cjs/picker/canvas-picker-service.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/glyph-picker.js +1 -1
- package/cjs/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/group-picker.d.ts +7 -0
- package/cjs/picker/contributions/canvas-picker/group-picker.js +26 -0
- package/cjs/picker/contributions/canvas-picker/group-picker.js.map +1 -0
- package/cjs/picker/contributions/canvas-picker/module.js +3 -1
- package/cjs/picker/contributions/canvas-picker/module.js.map +1 -1
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js +4 -2
- package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
- package/cjs/picker/contributions/constants.d.ts +1 -0
- package/cjs/picker/contributions/constants.js +9 -8
- package/cjs/picker/contributions/constants.js.map +1 -1
- package/cjs/picker/contributions/math-picker/glyph-picker.js +1 -1
- package/cjs/picker/contributions/math-picker/glyph-picker.js.map +1 -1
- package/cjs/picker/global-picker-service.d.ts +1 -1
- package/cjs/picker/global-picker-service.js +12 -5
- package/cjs/picker/global-picker-service.js.map +1 -1
- package/cjs/picker/math-picker-service.d.ts +2 -2
- package/cjs/picker/math-picker-service.js +1 -1
- package/cjs/picker/math-picker-service.js.map +1 -1
- package/cjs/picker/pick-interceptor.d.ts +12 -0
- package/cjs/picker/pick-interceptor.js +32 -5
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/picker/pick-modules.js +2 -0
- package/cjs/picker/pick-modules.js.map +1 -1
- package/cjs/picker/picker-service.d.ts +1 -1
- package/cjs/picker/picker-service.js +15 -6
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.d.ts +2 -0
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +42 -21
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.d.ts +13 -0
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +79 -0
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -0
- package/cjs/plugins/plugin-modules.js +1 -1
- package/cjs/plugins/plugin-modules.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +23 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.d.ts +3 -1
- package/cjs/render/contributions/render/draw-contribution.js +3 -1
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/draw-interceptor.d.ts +2 -0
- package/cjs/render/contributions/render/draw-interceptor.js +8 -0
- package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +7 -3
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.js +12 -5
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.d.ts +2 -2
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/render/render-service.js +3 -1
- package/cjs/render/render-service.js.map +1 -1
- package/dist/index.js +3686 -428
- package/dist/index.min.js +1 -1
- package/es/animate/animate.d.ts +1 -0
- package/es/animate/animate.js +3 -0
- package/es/animate/animate.js.map +1 -1
- package/es/animate/timeline.d.ts +1 -1
- package/es/animate/timeline.js +2 -2
- package/es/animate/timeline.js.map +1 -1
- package/es/canvas/contributions/browser/context.d.ts +1 -0
- package/es/common/contribution-provider.d.ts +1 -0
- package/es/common/contribution-provider.js +4 -0
- package/es/common/contribution-provider.js.map +1 -1
- package/es/common/enums.d.ts +4 -2
- package/es/common/enums.js +3 -2
- package/es/common/enums.js.map +1 -1
- package/es/core/contributions/env/base-contribution.d.ts +11 -1
- package/es/core/contributions/env/base-contribution.js +23 -0
- package/es/core/contributions/env/base-contribution.js.map +1 -1
- package/es/core/contributions/env/browser-contribution.d.ts +11 -2
- package/es/core/contributions/env/browser-contribution.js +67 -1
- package/es/core/contributions/env/browser-contribution.js.map +1 -1
- package/es/core/contributions/textMeasure/layout.js +1 -1
- package/es/core/contributions/textMeasure/layout.js.map +1 -1
- package/es/core/contributions/window/base-contribution.d.ts +11 -5
- package/es/core/contributions/window/base-contribution.js +10 -0
- package/es/core/contributions/window/base-contribution.js.map +1 -1
- package/es/core/contributions/window/browser-contribution.d.ts +11 -0
- package/es/core/contributions/window/browser-contribution.js +33 -2
- package/es/core/contributions/window/browser-contribution.js.map +1 -1
- package/es/core/global.d.ts +11 -1
- package/es/core/global.js +18 -0
- package/es/core/global.js.map +1 -1
- package/es/core/graphic-utils.d.ts +2 -0
- package/es/core/graphic-utils.js +13 -0
- package/es/core/graphic-utils.js.map +1 -1
- package/es/core/layer.js +6 -6
- package/es/core/layer.js.map +1 -1
- package/es/core/stage.d.ts +13 -4
- package/es/core/stage.js +57 -24
- package/es/core/stage.js.map +1 -1
- package/es/core/window.d.ts +6 -0
- package/es/core/window.js +10 -1
- package/es/core/window.js.map +1 -1
- package/es/event/event-manager.js +8 -8
- package/es/event/event-manager.js.map +1 -1
- package/es/event/event-system.js.map +1 -1
- package/es/event/federated-event/pointer-event.d.ts +1 -0
- package/es/event/federated-event/pointer-event.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-down.d.ts +12 -0
- package/es/graphic/builtin-symbol/arrow2-down.js +24 -0
- package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -0
- package/es/graphic/builtin-symbol/arrow2-left.js +1 -1
- package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-right.js +1 -1
- package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-up.d.ts +12 -0
- package/es/graphic/builtin-symbol/arrow2-up.js +24 -0
- package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -0
- package/es/graphic/builtin-symbol/close.d.ts +13 -0
- package/es/graphic/builtin-symbol/close.js +27 -0
- package/es/graphic/builtin-symbol/close.js.map +1 -0
- package/es/graphic/builtin-symbol/index.d.ts +1 -1
- package/es/graphic/builtin-symbol/index.js +11 -1
- package/es/graphic/builtin-symbol/index.js.map +1 -1
- package/es/graphic/builtin-symbol/line-h.d.ts +13 -0
- package/es/graphic/builtin-symbol/line-h.js +26 -0
- package/es/graphic/builtin-symbol/line-h.js.map +1 -0
- package/es/graphic/builtin-symbol/line-v.d.ts +13 -0
- package/es/graphic/builtin-symbol/line-v.js +26 -0
- package/es/graphic/builtin-symbol/line-v.js.map +1 -0
- package/es/graphic/builtin-symbol/utils.d.ts +13 -5
- package/es/graphic/builtin-symbol/utils.js +25 -7
- package/es/graphic/builtin-symbol/utils.js.map +1 -1
- package/es/graphic/config.js +8 -4
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/constants.d.ts +22 -0
- package/es/graphic/constants.js +26 -0
- package/es/graphic/constants.js.map +1 -1
- package/es/graphic/graphic.d.ts +4 -1
- package/es/graphic/graphic.js +48 -21
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.js +1 -1
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/index.d.ts +1 -0
- package/es/graphic/index.js +2 -0
- package/es/graphic/index.js.map +1 -1
- package/es/graphic/richtext/utils.d.ts +1 -1
- package/es/graphic/richtext/utils.js +1 -1
- package/es/graphic/richtext/utils.js.map +1 -1
- package/es/graphic/symbol.d.ts +2 -1
- package/es/graphic/symbol.js +28 -1
- package/es/graphic/symbol.js.map +1 -1
- package/es/graphic/text.js +33 -23
- package/es/graphic/text.js.map +1 -1
- package/es/graphic/tools.d.ts +3 -2
- package/es/graphic/tools.js +59 -0
- package/es/graphic/tools.js.map +1 -1
- package/es/graphic/wrap-text.js +10 -8
- package/es/graphic/wrap-text.js.map +1 -1
- package/es/index.d.ts +3 -1
- package/es/index.js +5 -1
- package/es/index.js.map +1 -1
- package/es/interface/animate.d.ts +3 -1
- package/es/interface/animate.js.map +1 -1
- package/es/interface/core.d.ts +1 -0
- package/es/interface/core.js.map +1 -1
- package/es/interface/global.d.ts +25 -1
- package/es/interface/global.js.map +1 -1
- package/es/interface/graphic/image.d.ts +1 -0
- package/es/interface/graphic/image.js.map +1 -1
- package/es/interface/graphic/symbol.d.ts +3 -2
- package/es/interface/graphic/symbol.js.map +1 -1
- package/es/interface/graphic/text.d.ts +1 -0
- package/es/interface/graphic/text.js.map +1 -1
- package/es/interface/graphic.d.ts +27 -3
- package/es/interface/graphic.js.map +1 -1
- package/es/interface/picker.d.ts +9 -1
- package/es/interface/picker.js.map +1 -1
- package/es/interface/render.d.ts +1 -0
- package/es/interface/render.js.map +1 -1
- package/es/interface/stage.d.ts +10 -3
- package/es/interface/stage.js.map +1 -1
- package/es/interface/window.d.ts +12 -0
- package/es/interface/window.js.map +1 -1
- package/es/jsx/graphicType.d.ts +172 -0
- package/es/jsx/graphicType.js +126 -0
- package/es/jsx/graphicType.js.map +1 -0
- package/es/jsx/index.d.ts +2 -0
- package/es/jsx/index.js +4 -0
- package/es/jsx/index.js.map +1 -0
- package/es/jsx/jsx-classic.d.ts +3 -0
- package/es/jsx/jsx-classic.js +56 -0
- package/es/jsx/jsx-classic.js.map +1 -0
- package/es/picker/canvas-picker-service.d.ts +2 -2
- package/es/picker/canvas-picker-service.js +20 -3
- package/es/picker/canvas-picker-service.js.map +1 -1
- package/es/picker/contributions/canvas-picker/glyph-picker.js +1 -1
- package/es/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
- package/es/picker/contributions/canvas-picker/group-picker.d.ts +7 -0
- package/es/picker/contributions/canvas-picker/group-picker.js +23 -0
- package/es/picker/contributions/canvas-picker/group-picker.js.map +1 -0
- package/es/picker/contributions/canvas-picker/module.js +6 -2
- package/es/picker/contributions/canvas-picker/module.js.map +1 -1
- package/es/picker/contributions/canvas-picker/symbol-picker.js +6 -1
- package/es/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
- package/es/picker/contributions/constants.d.ts +1 -0
- package/es/picker/contributions/constants.js +2 -0
- package/es/picker/contributions/constants.js.map +1 -1
- package/es/picker/contributions/math-picker/glyph-picker.js +1 -1
- package/es/picker/contributions/math-picker/glyph-picker.js.map +1 -1
- package/es/picker/global-picker-service.d.ts +1 -1
- package/es/picker/global-picker-service.js +12 -5
- package/es/picker/global-picker-service.js.map +1 -1
- package/es/picker/math-picker-service.d.ts +2 -2
- package/es/picker/math-picker-service.js +1 -1
- package/es/picker/math-picker-service.js.map +1 -1
- package/es/picker/pick-interceptor.d.ts +12 -0
- package/es/picker/pick-interceptor.js +34 -4
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/picker/pick-modules.js +4 -2
- package/es/picker/pick-modules.js.map +1 -1
- package/es/picker/picker-service.d.ts +1 -1
- package/es/picker/picker-service.js +15 -6
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/flex-layout-plugin.d.ts +2 -0
- package/es/plugins/builtin-plugin/flex-layout-plugin.js +47 -20
- package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.d.ts +13 -0
- package/es/plugins/builtin-plugin/html-attribute-plugin.js +75 -0
- package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -0
- package/es/plugins/plugin-modules.js +2 -2
- package/es/plugins/plugin-modules.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +27 -0
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.d.ts +3 -1
- package/es/render/contributions/render/draw-contribution.js +4 -0
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/draw-interceptor.d.ts +2 -0
- package/es/render/contributions/render/draw-interceptor.js +8 -0
- package/es/render/contributions/render/draw-interceptor.js.map +1 -1
- package/es/render/contributions/render/image-render.js +10 -2
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.js +12 -5
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/utils.d.ts +2 -2
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/render/render-service.js +3 -1
- package/es/render/render-service.js.map +1 -1
- package/package.json +10 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IPointLike } from '@visactor/vutils';
|
|
1
|
+
import type { IMatrix, IPointLike } from '@visactor/vutils';
|
|
2
2
|
import type { ICanvas, IContext2d, IGraphic, EnvType, IGlobal, IGraphicPicker, IPickerService, IContributionProvider, IPickItemInterceptorContribution, IPickParams } from '../interface';
|
|
3
3
|
import { DefaultPickService } from './picker-service';
|
|
4
4
|
export declare class DefaultMathPickerService extends DefaultPickService implements IPickerService {
|
|
@@ -12,5 +12,5 @@ export declare class DefaultMathPickerService extends DefaultPickService impleme
|
|
|
12
12
|
constructor(contributions: IContributionProvider<IGraphicPicker>, global: IGlobal, pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>);
|
|
13
13
|
init(): void;
|
|
14
14
|
configure(global: IGlobal, env: EnvType): void;
|
|
15
|
-
pickItem(graphic: IGraphic, point: IPointLike, params?: IPickParams): IGraphic | null;
|
|
15
|
+
pickItem(graphic: IGraphic, point: IPointLike, parentMatrix: IMatrix | null, params?: IPickParams): IGraphic | null;
|
|
16
16
|
}
|
|
@@ -34,7 +34,7 @@ let DefaultMathPickerService = class extends picker_service_1.DefaultPickService
|
|
|
34
34
|
configure(global, env) {
|
|
35
35
|
this.pickContext = new canvas_1.EmptyContext2d(null, 1);
|
|
36
36
|
}
|
|
37
|
-
pickItem(graphic, point, params) {
|
|
37
|
+
pickItem(graphic, point, parentMatrix, params) {
|
|
38
38
|
if (!1 === graphic.attribute.pickable) return null;
|
|
39
39
|
const picker = this.pickerMap.get(graphic.numberType);
|
|
40
40
|
return picker && picker.contains(graphic, point, params) ? graphic : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/math-picker-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,2EAAuE;AACvE,yCAAqE;AAarE,qDAAsD;AACtD,sCAA2C;AAC3C,yDAAmE;AACnE,4CAAuC;AACvC,yDAAyD;AAKlD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,mCAAkB;IAO9D,YAGqB,aAAoD,EACtC,MAAe,EAI7B,gCAAyF;QAE5G,KAAK,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAP7B,kBAAa,GAAb,aAAa,CAAuC;QACtC,WAAM,GAAN,MAAM,CAAS;QAI7B,qCAAgC,GAAhC,gCAAgC,CAAyD;QAG5G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YAC7E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAGD,IAAI;QACF,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,GAAY;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,uBAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAGD,QAAQ,CAAC,OAAiB,EAAE,KAAiB,EAAE,MAAoB;
|
|
1
|
+
{"version":3,"sources":["../src/picker/math-picker-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,2EAAuE;AACvE,yCAAqE;AAarE,qDAAsD;AACtD,sCAA2C;AAC3C,yDAAmE;AACnE,4CAAuC;AACvC,yDAAyD;AAKlD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,mCAAkB;IAO9D,YAGqB,aAAoD,EACtC,MAAe,EAI7B,gCAAyF;QAE5G,KAAK,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;QAP7B,kBAAa,GAAb,aAAa,CAAuC;QACtC,WAAM,GAAN,MAAM,CAAS;QAI7B,qCAAgC,GAAhC,gCAAgC,CAAyD;QAG5G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;YAC7E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAGD,IAAI;QACF,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,GAAY;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,uBAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAGD,QAAQ,CAAC,OAAiB,EAAE,KAAiB,EAAE,YAA4B,EAAE,MAAoB;QAC/F,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;CACF,CAAA;AAvBC;IAAC,IAAA,yBAAa,GAAE;;;;oDAMf;AA/BU,wBAAwB;IADpC,IAAA,sBAAU,GAAE;IASR,WAAA,IAAA,kBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,iBAAK,EAAC,kCAAsB,CAAC,CAAA;IAE7B,WAAA,IAAA,kBAAM,EAAC,mBAAO,CAAC,CAAA;IAEf,WAAA,IAAA,kBAAM,EAAC,4CAAoB,CAAC,CAAA;IAC5B,WAAA,IAAA,iBAAK,EAAC,sCAAmB,CAAC,CAAA;;GAdlB,wBAAwB,CAgDpC;AAhDY,4DAAwB","file":"math-picker-service.js","sourcesContent":["import type { IMatrix, IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line\nimport { ContributionProvider } from '../common/contribution-provider';\nimport { inject, injectable, named, postConstruct } from 'inversify';\nimport type {\n ICanvas,\n IContext2d,\n IGraphic,\n EnvType,\n IGlobal,\n IGraphicPicker,\n IPickerService,\n IContributionProvider,\n IPickItemInterceptorContribution,\n IPickParams\n} from '../interface';\nimport { DefaultPickService } from './picker-service';\nimport { EmptyContext2d } from '../canvas';\nimport { MathPickerContribution } from './contributions/constants';\nimport { VGlobal } from '../constants';\nimport { PickItemInterceptor } from './pick-interceptor';\n\n// 默认的pick-service,提供基本的最优选中策略,尽量不需要用户自己实现contribution\n// 用户可以写plugin\n@injectable()\nexport class DefaultMathPickerService extends DefaultPickService implements IPickerService {\n declare type: 'default';\n // pcik canvas\n declare pickCanvas: ICanvas;\n declare pickContext: IContext2d;\n declare pickerMap: Map<number, IGraphicPicker>;\n\n constructor(\n @inject(ContributionProvider)\n @named(MathPickerContribution)\n protected readonly contributions: IContributionProvider<IGraphicPicker>,\n @inject(VGlobal) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {\n super(global, pickItemInterceptorContributions);\n this.global.hooks.onSetEnv.tap('math-picker-service', (lastEnv, env, global) => {\n this.configure(global, env);\n });\n this.configure(this.global, this.global.env);\n this.pickerMap = new Map();\n }\n\n @postConstruct()\n init() {\n this.contributions.getContributions().forEach(item => {\n this.pickerMap.set(item.numberType, item);\n });\n super._init();\n }\n\n configure(global: IGlobal, env: EnvType) {\n this.pickContext = new EmptyContext2d(null, 1);\n }\n\n // todo: switch统一改为数字map\n pickItem(graphic: IGraphic, point: IPointLike, parentMatrix: IMatrix | null, params?: IPickParams): IGraphic | null {\n if (graphic.attribute.pickable === false) {\n return null;\n }\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker.contains(graphic, point, params) ? graphic : null;\n }\n}\n"]}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import type { IMatrix, IPointLike } from '@visactor/vutils';
|
|
2
2
|
import type { IContext2d, IGraphic, IPickItemInterceptorContribution, IPickParams, IPickerService, PickResult } from '../interface';
|
|
3
3
|
export declare const PickItemInterceptor: unique symbol;
|
|
4
|
+
export declare class ShadowRootPickItemInterceptorContribution implements IPickItemInterceptorContribution {
|
|
5
|
+
order: number;
|
|
6
|
+
afterPickItem(graphic: IGraphic, pickerService: IPickerService, point: IPointLike, pickParams: IPickParams, params?: {
|
|
7
|
+
parentMatrix: IMatrix;
|
|
8
|
+
}): boolean | PickResult;
|
|
9
|
+
beforePickItem(graphic: IGraphic, pickerService: IPickerService, point: IPointLike, pickParams: IPickParams, params?: {
|
|
10
|
+
parentMatrix: IMatrix;
|
|
11
|
+
}): boolean | PickResult;
|
|
12
|
+
protected _pickItem(graphic: IGraphic, pickerService: IPickerService, point: IPointLike, pickParams: IPickParams, params?: {
|
|
13
|
+
parentMatrix: IMatrix;
|
|
14
|
+
}): boolean | PickResult;
|
|
15
|
+
}
|
|
4
16
|
export declare class Canvas3DPickItemInterceptor implements IPickItemInterceptorContribution {
|
|
5
17
|
order: number;
|
|
6
18
|
beforePickItem(graphic: IGraphic, pickerService: IPickerService, point: IPointLike, pickParams: IPickParams, params?: {
|
|
@@ -8,12 +8,40 @@ var __decorate = this && this.__decorate || function(decorators, target, key, de
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", {
|
|
10
10
|
value: !0
|
|
11
|
-
}), exports.Canvas3DPickItemInterceptor = exports.PickItemInterceptor = void 0;
|
|
11
|
+
}), exports.Canvas3DPickItemInterceptor = exports.ShadowRootPickItemInterceptorContribution = exports.PickItemInterceptor = void 0;
|
|
12
12
|
|
|
13
|
-
const vutils_1 = require("@visactor/vutils"), inversify_1 = require("inversify"), constants_1 = require("../graphic/constants");
|
|
13
|
+
const vutils_1 = require("@visactor/vutils"), inversify_1 = require("inversify"), constants_1 = require("../graphic/constants"), matrix_allocate_1 = require("../allocator/matrix-allocate");
|
|
14
14
|
|
|
15
15
|
exports.PickItemInterceptor = Symbol.for("PickItemInterceptor");
|
|
16
16
|
|
|
17
|
+
let ShadowRootPickItemInterceptorContribution = class {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.order = 1;
|
|
20
|
+
}
|
|
21
|
+
afterPickItem(graphic, pickerService, point, pickParams, params) {
|
|
22
|
+
return (graphic.attribute.shadowRootIdx > 0 || !graphic.attribute.shadowRootIdx) && this._pickItem(graphic, pickerService, point, pickParams, params);
|
|
23
|
+
}
|
|
24
|
+
beforePickItem(graphic, pickerService, point, pickParams, params) {
|
|
25
|
+
return graphic.attribute.shadowRootIdx < 0 && this._pickItem(graphic, pickerService, point, pickParams, params);
|
|
26
|
+
}
|
|
27
|
+
_pickItem(graphic, pickerService, point, pickParams, params) {
|
|
28
|
+
if (!graphic.shadowRoot) return !1;
|
|
29
|
+
const {parentMatrix: parentMatrix} = params || {};
|
|
30
|
+
if (!parentMatrix) return !1;
|
|
31
|
+
const context = pickerService.pickContext;
|
|
32
|
+
context.highPerformanceSave();
|
|
33
|
+
const g = graphic.shadowRoot, currentGroupMatrix = matrix_allocate_1.matrixAllocate.allocateByObj(parentMatrix), newPoint = new vutils_1.Point(point.x, point.y);
|
|
34
|
+
parentMatrix.transformPoint(newPoint, newPoint);
|
|
35
|
+
const transMatrix = graphic.transMatrix;
|
|
36
|
+
currentGroupMatrix.multiply(transMatrix.a, transMatrix.b, transMatrix.c, transMatrix.d, transMatrix.e, transMatrix.f);
|
|
37
|
+
const result = pickerService.pickGroup(g, newPoint.clone(), currentGroupMatrix, pickParams);
|
|
38
|
+
return context.highPerformanceRestore(), result;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
ShadowRootPickItemInterceptorContribution = __decorate([ (0, inversify_1.injectable)() ], ShadowRootPickItemInterceptorContribution),
|
|
43
|
+
exports.ShadowRootPickItemInterceptorContribution = ShadowRootPickItemInterceptorContribution;
|
|
44
|
+
|
|
17
45
|
let Canvas3DPickItemInterceptor = class {
|
|
18
46
|
constructor() {
|
|
19
47
|
this.order = 1;
|
|
@@ -65,10 +93,9 @@ let Canvas3DPickItemInterceptor = class {
|
|
|
65
93
|
graphic.add(g);
|
|
66
94
|
}));
|
|
67
95
|
} else result = pickerService.pickGroup(graphic, point, params.parentMatrix, pickParams);
|
|
68
|
-
return context.camera = null,
|
|
69
|
-
result;
|
|
96
|
+
return context.camera = null, pickParams.in3dInterceptor = !1, result;
|
|
70
97
|
}
|
|
71
|
-
return null;
|
|
98
|
+
return context.restore(), null;
|
|
72
99
|
}
|
|
73
100
|
initCanvasCtx(context) {
|
|
74
101
|
context.setTransformForCurrent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/pick-interceptor.ts"],"names":[],"mappings":"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","file":"pick-interceptor.js","sourcesContent":["import type { IMatrix, IPointLike } from '@visactor/vutils';\nimport { pi2 } from '@visactor/vutils';\nimport { injectable } from 'inversify';\nimport { ARC3D_NUMBER_TYPE } from '../graphic/constants';\nimport type {\n IArc,\n IContext2d,\n IGraphic,\n IGroup,\n IPickItemInterceptorContribution,\n IPickParams,\n IPickerService,\n PickResult\n} from '../interface';\n\n// 拦截器\nexport const PickItemInterceptor = Symbol.for('PickItemInterceptor');\n\n/**\n * 3d拦截器,用于渲染3d视角\n */\n@injectable()\nexport class Canvas3DPickItemInterceptor implements IPickItemInterceptorContribution {\n // canvas?: ICanvas;\n order: number = 1;\n\n beforePickItem(\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n pickParams: IPickParams,\n params?: {\n parentMatrix: IMatrix;\n }\n ) {\n if (!graphic.in3dMode || pickParams.in3dInterceptor) {\n return null;\n }\n\n const context = pickerService.pickContext;\n const stage = graphic.stage;\n if (!(context && stage)) {\n return null;\n }\n pickParams.in3dInterceptor = true;\n\n // 使用3d模式渲染\n context.save();\n this.initCanvasCtx(context);\n context.camera = stage.camera;\n\n // 设置context的transform到上一个节点\n if (graphic.isContainer) {\n // hack逻辑,如果是饼图的话,需要依次绘制不同的边\n let isPie: boolean = false;\n let is3d: boolean = false;\n graphic.forEachChildren((c: IGraphic) => {\n isPie = c.numberType === ARC3D_NUMBER_TYPE;\n return !isPie;\n });\n graphic.forEachChildren((c: IGraphic) => {\n is3d = !!c.findFace;\n return !is3d;\n });\n\n let result: PickResult;\n if (isPie) {\n const children = graphic.getChildren() as IArc[];\n // 绘制内层\n // drawContext.hack_pieFace = 'inside';\n // drawContribution.renderGroup(graphic as IGroup, drawContext);\n // 绘制底部\n // drawContext.hack_pieFace = 'bottom';\n // drawContribution.renderGroup(graphic as IGroup, drawContext);\n // 绘制外部\n // 排序一下\n const sortedChildren = [...children];\n sortedChildren.sort((a, b) => {\n let angle1 = (a.attribute.startAngle ?? 0 + a.attribute.endAngle ?? 0) / 2;\n let angle2 = (b.attribute.startAngle ?? 0 + b.attribute.endAngle ?? 0) / 2;\n while (angle1 < 0) {\n angle1 += pi2;\n }\n while (angle2 < 0) {\n angle2 += pi2;\n }\n return angle2 - angle1;\n });\n sortedChildren.forEach(c => {\n c._next = null;\n c._prev = null;\n });\n graphic.removeAllChild();\n graphic.update();\n sortedChildren.forEach(c => {\n graphic.appendChild(c);\n });\n pickParams.hack_pieFace = 'outside';\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n if (!result.graphic) {\n // 绘制内部\n pickParams.hack_pieFace = 'inside';\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n }\n if (!result.graphic) {\n // 绘制顶部\n pickParams.hack_pieFace = 'top';\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n }\n graphic.removeAllChild();\n children.forEach(c => {\n c._next = null;\n c._prev = null;\n });\n children.forEach(c => {\n graphic.appendChild(c);\n });\n } else if (is3d) {\n // 排序这些图元\n const children = graphic.getChildren() as IGraphic[];\n const zChildren = children.map(g => {\n const face3d = g.findFace();\n const vertices = face3d.vertices;\n // 计算每个顶点的view\n const viewdVerticesZ = vertices.map(v => {\n return context.view(v[0], v[1], v[2] + g.attribute.z ?? 0)[2];\n });\n const ave_z = viewdVerticesZ.reduce((a, b) => a + b, 0);\n return {\n ave_z,\n g\n };\n });\n zChildren.sort((a, b) => b.ave_z - a.ave_z);\n graphic.removeAllChild();\n zChildren.forEach(i => {\n i.g._next = null;\n i.g._prev = null;\n });\n graphic.update();\n zChildren.forEach(i => {\n graphic.add(i.g);\n });\n\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n\n graphic.removeAllChild();\n children.forEach(g => {\n g._next = null;\n g._prev = null;\n });\n graphic.update();\n children.forEach(g => {\n graphic.add(g);\n });\n } else {\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n }\n\n context.camera = null;\n context.restore();\n\n pickParams.in3dInterceptor = false;\n return result;\n }\n return null;\n }\n\n initCanvasCtx(context: IContext2d) {\n context.setTransformForCurrent();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/picker/pick-interceptor.ts"],"names":[],"mappings":"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","file":"pick-interceptor.js","sourcesContent":["import type { IMatrix, IPointLike } from '@visactor/vutils';\nimport { Point, pi2 } from '@visactor/vutils';\nimport { injectable } from 'inversify';\nimport { ARC3D_NUMBER_TYPE } from '../graphic/constants';\nimport type {\n IArc,\n IContext2d,\n IGraphic,\n IGroup,\n IPickItemInterceptorContribution,\n IPickParams,\n IPickerService,\n PickResult\n} from '../interface';\nimport { matrixAllocate } from '../allocator/matrix-allocate';\n\n// 拦截器\nexport const PickItemInterceptor = Symbol.for('PickItemInterceptor');\n\n/**\n * 影子节点拦截器,用于渲染影子节点\n */\n@injectable()\nexport class ShadowRootPickItemInterceptorContribution implements IPickItemInterceptorContribution {\n order: number = 1;\n afterPickItem(\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n pickParams: IPickParams,\n params?: {\n parentMatrix: IMatrix;\n }\n ): boolean | PickResult {\n if (graphic.attribute.shadowRootIdx > 0 || !graphic.attribute.shadowRootIdx) {\n return this._pickItem(graphic, pickerService, point, pickParams, params);\n }\n return false;\n }\n\n beforePickItem(\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n pickParams: IPickParams,\n params?: {\n parentMatrix: IMatrix;\n }\n ): boolean | PickResult {\n if (graphic.attribute.shadowRootIdx < 0) {\n return this._pickItem(graphic, pickerService, point, pickParams, params);\n }\n return false;\n }\n\n protected _pickItem(\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n pickParams: IPickParams,\n params?: {\n parentMatrix: IMatrix;\n }\n ): boolean | PickResult {\n if (!graphic.shadowRoot) {\n return false;\n }\n const { parentMatrix } = params || {};\n if (!parentMatrix) {\n return false;\n }\n\n const context = pickerService.pickContext;\n context.highPerformanceSave();\n\n const g = graphic.shadowRoot;\n const currentGroupMatrix = matrixAllocate.allocateByObj(parentMatrix);\n const newPoint = new Point(point.x, point.y);\n parentMatrix.transformPoint(newPoint, newPoint);\n const transMatrix = graphic.transMatrix;\n currentGroupMatrix.multiply(\n transMatrix.a,\n transMatrix.b,\n transMatrix.c,\n transMatrix.d,\n transMatrix.e,\n transMatrix.f\n );\n\n const result = pickerService.pickGroup(g, newPoint.clone(), currentGroupMatrix, pickParams);\n\n context.highPerformanceRestore();\n\n return result;\n }\n}\n\n/**\n * 3d拦截器,用于渲染3d视角\n */\n@injectable()\nexport class Canvas3DPickItemInterceptor implements IPickItemInterceptorContribution {\n // canvas?: ICanvas;\n order: number = 1;\n\n beforePickItem(\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n pickParams: IPickParams,\n params?: {\n parentMatrix: IMatrix;\n }\n ) {\n if (!graphic.in3dMode || pickParams.in3dInterceptor) {\n return null;\n }\n\n const context = pickerService.pickContext;\n const stage = graphic.stage;\n if (!(context && stage)) {\n return null;\n }\n pickParams.in3dInterceptor = true;\n\n // 使用3d模式渲染\n context.save();\n this.initCanvasCtx(context);\n context.camera = stage.camera;\n\n // 设置context的transform到上一个节点\n if (graphic.isContainer) {\n // hack逻辑,如果是饼图的话,需要依次绘制不同的边\n let isPie: boolean = false;\n let is3d: boolean = false;\n graphic.forEachChildren((c: IGraphic) => {\n isPie = c.numberType === ARC3D_NUMBER_TYPE;\n return !isPie;\n });\n graphic.forEachChildren((c: IGraphic) => {\n is3d = !!c.findFace;\n return !is3d;\n });\n\n let result: PickResult;\n if (isPie) {\n const children = graphic.getChildren() as IArc[];\n // 绘制内层\n // drawContext.hack_pieFace = 'inside';\n // drawContribution.renderGroup(graphic as IGroup, drawContext);\n // 绘制底部\n // drawContext.hack_pieFace = 'bottom';\n // drawContribution.renderGroup(graphic as IGroup, drawContext);\n // 绘制外部\n // 排序一下\n const sortedChildren = [...children];\n sortedChildren.sort((a, b) => {\n let angle1 = (a.attribute.startAngle ?? 0 + a.attribute.endAngle ?? 0) / 2;\n let angle2 = (b.attribute.startAngle ?? 0 + b.attribute.endAngle ?? 0) / 2;\n while (angle1 < 0) {\n angle1 += pi2;\n }\n while (angle2 < 0) {\n angle2 += pi2;\n }\n return angle2 - angle1;\n });\n sortedChildren.forEach(c => {\n c._next = null;\n c._prev = null;\n });\n graphic.removeAllChild();\n graphic.update();\n sortedChildren.forEach(c => {\n graphic.appendChild(c);\n });\n pickParams.hack_pieFace = 'outside';\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n if (!result.graphic) {\n // 绘制内部\n pickParams.hack_pieFace = 'inside';\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n }\n if (!result.graphic) {\n // 绘制顶部\n pickParams.hack_pieFace = 'top';\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n }\n graphic.removeAllChild();\n children.forEach(c => {\n c._next = null;\n c._prev = null;\n });\n children.forEach(c => {\n graphic.appendChild(c);\n });\n } else if (is3d) {\n // 排序这些图元\n const children = graphic.getChildren() as IGraphic[];\n const zChildren = children.map(g => {\n const face3d = g.findFace();\n const vertices = face3d.vertices;\n // 计算每个顶点的view\n const viewdVerticesZ = vertices.map(v => {\n return context.view(v[0], v[1], v[2] + g.attribute.z ?? 0)[2];\n });\n const ave_z = viewdVerticesZ.reduce((a, b) => a + b, 0);\n return {\n ave_z,\n g\n };\n });\n zChildren.sort((a, b) => b.ave_z - a.ave_z);\n graphic.removeAllChild();\n zChildren.forEach(i => {\n i.g._next = null;\n i.g._prev = null;\n });\n graphic.update();\n zChildren.forEach(i => {\n graphic.add(i.g);\n });\n\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n\n graphic.removeAllChild();\n children.forEach(g => {\n g._next = null;\n g._prev = null;\n });\n graphic.update();\n children.forEach(g => {\n graphic.add(g);\n });\n } else {\n result = pickerService.pickGroup(graphic as IGroup, point, params.parentMatrix, pickParams);\n }\n\n context.camera = null;\n\n pickParams.in3dInterceptor = false;\n return result;\n }\n context.restore();\n return null;\n }\n\n initCanvasCtx(context: IContext2d) {\n context.setTransformForCurrent();\n }\n}\n"]}
|
|
@@ -14,6 +14,8 @@ exports.default = new inversify_1.ContainerModule((bind => {
|
|
|
14
14
|
bind(global_picker_service_1.GlobalPickerService).toService(global_picker_service_1.DefaultGlobalPickerService),
|
|
15
15
|
bind(pick_interceptor_1.Canvas3DPickItemInterceptor).toSelf().inSingletonScope(),
|
|
16
16
|
bind(pick_interceptor_1.PickItemInterceptor).toService(pick_interceptor_1.Canvas3DPickItemInterceptor),
|
|
17
|
+
bind(pick_interceptor_1.ShadowRootPickItemInterceptorContribution).toSelf().inSingletonScope(),
|
|
18
|
+
bind(pick_interceptor_1.PickItemInterceptor).toService(pick_interceptor_1.ShadowRootPickItemInterceptorContribution),
|
|
17
19
|
(0, contribution_provider_1.bindContributionProvider)(bind, pick_interceptor_1.PickItemInterceptor);
|
|
18
20
|
}));
|
|
19
21
|
//# sourceMappingURL=pick-modules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/pick-modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,qDAAiD;AACjD,mEAA0F;AAC1F,mEAAqE;AACrE,+DAAiE;AACjE,
|
|
1
|
+
{"version":3,"sources":["../src/picker/pick-modules.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAC5C,qDAAiD;AACjD,mEAA0F;AAC1F,mEAAqE;AACrE,+DAAiE;AACjE,yDAI4B;AAC5B,2EAA2E;AAE3E,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,CAAC,kDAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,8CAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAE3D,IAAI,CAAC,8BAAa,CAAC,CAAC,SAAS,CAAC,kDAA0B,CAAC,CAAC;IAE1D,IAAI,CAAC,kDAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,2CAAmB,CAAC,CAAC,SAAS,CAAC,kDAA0B,CAAC,CAAC;IAGhE,IAAI,CAAC,8CAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,CAAC,sCAAmB,CAAC,CAAC,SAAS,CAAC,8CAA2B,CAAC,CAAC;IAEjE,IAAI,CAAC,4DAAyC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5E,IAAI,CAAC,sCAAmB,CAAC,CAAC,SAAS,CAAC,4DAAyC,CAAC,CAAC;IAC/E,IAAA,gDAAwB,EAAC,IAAI,EAAE,sCAAmB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC","file":"pick-modules.js","sourcesContent":["import { ContainerModule } from 'inversify';\nimport { PickerService } from './picker-service';\nimport { DefaultGlobalPickerService, GlobalPickerService } from './global-picker-service';\nimport { DefaultCanvasPickerService } from './canvas-picker-service';\nimport { DefaultMathPickerService } from './math-picker-service';\nimport {\n Canvas3DPickItemInterceptor,\n PickItemInterceptor,\n ShadowRootPickItemInterceptorContribution\n} from './pick-interceptor';\nimport { bindContributionProvider } from '../common/contribution-provider';\n\nexport default new ContainerModule(bind => {\n bind(DefaultCanvasPickerService).toSelf().inSingletonScope();\n bind(DefaultMathPickerService).toSelf().inSingletonScope();\n\n bind(PickerService).toService(DefaultCanvasPickerService);\n\n bind(DefaultGlobalPickerService).toSelf().inSingletonScope();\n bind(GlobalPickerService).toService(DefaultGlobalPickerService);\n\n // interceptor\n bind(Canvas3DPickItemInterceptor).toSelf().inSingletonScope();\n bind(PickItemInterceptor).toService(Canvas3DPickItemInterceptor);\n\n bind(ShadowRootPickItemInterceptorContribution).toSelf().inSingletonScope();\n bind(PickItemInterceptor).toService(ShadowRootPickItemInterceptorContribution);\n bindContributionProvider(bind, PickItemInterceptor);\n});\n"]}
|
|
@@ -15,6 +15,6 @@ export declare abstract class DefaultPickService implements IPickerService {
|
|
|
15
15
|
pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult;
|
|
16
16
|
containsPoint(graphic: IGraphic, point: IPointLike, params: IPickParams): boolean;
|
|
17
17
|
pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams): PickResult;
|
|
18
|
-
abstract pickItem(graphic: IGraphic, point: IPointLike, params: IPickParams): IGraphic | null;
|
|
18
|
+
abstract pickItem(graphic: IGraphic, point: IPointLike, parentMatrix: IMatrix | null, params: IPickParams): IGraphic | null;
|
|
19
19
|
protected selectPicker(graphic: IGraphic): IGraphicPicker | null;
|
|
20
20
|
}
|
|
@@ -43,13 +43,20 @@ let DefaultPickService = class {
|
|
|
43
43
|
this.pickContext && this.pickContext.clearMatrix(!0, 1);
|
|
44
44
|
const parentMatrix = new vutils_1.Matrix(1, 0, 0, 1, offsetX, offsetY);
|
|
45
45
|
let group;
|
|
46
|
-
for (let i = graphics.length - 1; i >= 0 && (graphics[i].isContainer ? result = this.pickGroup(graphics[i], point, parentMatrix, params) : result.graphic = this.pickItem(graphics[i], point, params),
|
|
46
|
+
for (let i = graphics.length - 1; i >= 0 && (graphics[i].isContainer ? result = this.pickGroup(graphics[i], point, parentMatrix, params) : result.graphic = this.pickItem(graphics[i], point, parentMatrix, params),
|
|
47
47
|
!result.graphic); i--) group || (group = result.group);
|
|
48
|
-
|
|
49
|
-
result
|
|
48
|
+
if (result.graphic || (result.group = group), this.pickContext && (this.pickContext.inuse = !1),
|
|
49
|
+
result.graphic) {
|
|
50
|
+
let g = result.graphic;
|
|
51
|
+
for (;g.parent; ) g = g.parent;
|
|
52
|
+
g.shadowHost && (result.params = {
|
|
53
|
+
shadowTarget: result.graphic
|
|
54
|
+
}, result.graphic = g.shadowHost);
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
50
57
|
}
|
|
51
58
|
containsPoint(graphic, point, params) {
|
|
52
|
-
return !!this.pickItem(graphic, point, params);
|
|
59
|
+
return !!this.pickItem(graphic, point, null, params);
|
|
53
60
|
}
|
|
54
61
|
pickGroup(group, point, parentMatrix, params) {
|
|
55
62
|
let result = {
|
|
@@ -81,9 +88,11 @@ let DefaultPickService = class {
|
|
|
81
88
|
currentGroupMatrix.transformPoint(newPoint, newPoint);
|
|
82
89
|
const insideGroup = group.AABBBounds.containsPoint(newPoint);
|
|
83
90
|
if (!insideGroup && !group.stage.camera) return result;
|
|
91
|
+
const pickedItem = this.pickItem(group, newPoint.clone(), parentMatrix, params);
|
|
92
|
+
pickedItem && (result.graphic = pickedItem);
|
|
84
93
|
const groupPicked = !1 !== group.attribute.pickable && insideGroup;
|
|
85
94
|
return currentGroupMatrix.multiply(transMatrix.a, transMatrix.b, transMatrix.c, transMatrix.d, transMatrix.e, transMatrix.f),
|
|
86
|
-
!1
|
|
95
|
+
!1 === group.attribute.childrenPickable || pickedItem || (0, sort_1.foreach)(group, graphic_1.DefaultAttribute.zIndex, (graphic => {
|
|
87
96
|
if (graphic.isContainer) {
|
|
88
97
|
const newPoint = new vutils_1.Point(point.x, point.y), theme = (0, graphic_1.getTheme)(group).group, {scrollX: scrollX = theme.scrollX, scrollY: scrollY = theme.scrollY} = group.attribute;
|
|
89
98
|
newPoint.x -= scrollX, newPoint.y -= scrollY, result = this.pickGroup(graphic, newPoint, currentGroupMatrix, params);
|
|
@@ -92,7 +101,7 @@ let DefaultPickService = class {
|
|
|
92
101
|
currentGroupMatrix.transformPoint(newPoint, newPoint);
|
|
93
102
|
const theme = (0, graphic_1.getTheme)(group).group, {scrollX: scrollX = theme.scrollX, scrollY: scrollY = theme.scrollY} = group.attribute;
|
|
94
103
|
newPoint.x -= scrollX, newPoint.y -= scrollY;
|
|
95
|
-
const pickedItem = this.pickItem(graphic, newPoint, params);
|
|
104
|
+
const pickedItem = this.pickItem(graphic, newPoint, parentMatrix, params);
|
|
96
105
|
result.graphic = pickedItem;
|
|
97
106
|
}
|
|
98
107
|
return !!result.graphic || !!result.group;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/picker/picker-service.ts"],"names":[],"mappings":"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","file":"picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point, IBounds } from '@visactor/vutils';\nimport { inject, injectable, named } from 'inversify';\nimport { foreach } from '../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n IContext2d,\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult,\n IPickItemInterceptorContribution,\n IContributionProvider\n} from '../interface';\nimport { DefaultAttribute, getTheme, mat3Tomat4, multiplyMat4Mat4 } from '../graphic';\nimport { mat4Allocate, matrixAllocate } from '../allocator/matrix-allocate';\nimport { PickItemInterceptor } from './pick-interceptor';\nimport { VGlobal } from '../constants';\n\nexport const GraphicPicker = Symbol.for('GraphicPicker');\n\nexport const PickerService = Symbol.for('PickerService');\n\n@injectable()\nexport abstract class DefaultPickService implements IPickerService {\n type: string = 'default';\n declare pickerMap: Map<number, IGraphicPicker>;\n declare pickContext?: IContext2d;\n declare InterceptorContributions: IPickItemInterceptorContribution[];\n\n constructor(\n @inject(VGlobal) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {}\n\n protected _init() {\n this.InterceptorContributions = this.pickItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n abstract configure(global: IGlobal, env: EnvType): void;\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n params.pickerService = this;\n let offsetX = 0;\n let offsetY = 0;\n if (params && params.bounds) {\n if (!params.bounds.contains(point.x, point.y)) {\n return result;\n }\n offsetX = params.bounds.x1;\n offsetY = params.bounds.y1;\n }\n if (this.pickContext) {\n this.pickContext.inuse = true;\n }\n params.pickContext = this.pickContext;\n this.pickContext && this.pickContext.clearMatrix(true, 1);\n\n const parentMatrix = new Matrix(1, 0, 0, 1, offsetX, offsetY);\n let group: IGroup;\n for (let i = graphics.length - 1; i >= 0; i--) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result.graphic = this.pickItem(graphics[i], point, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n if (this.pickContext) {\n this.pickContext.inuse = false;\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params: IPickParams): boolean {\n return !!this.pickItem(graphic, point, params);\n }\n\n // TODO: 支持3d模式的拾取和自定义path的拾取\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n const context = params.pickContext;\n const lastMatrix = context.modelMatrix;\n // 如果是3d,那么需要生成modelMatrix\n if (context.camera) {\n const m = group.transMatrix;\n const matrix = mat4Allocate.allocate();\n mat3Tomat4(matrix, m);\n if (lastMatrix) {\n if (matrix) {\n const m = mat4Allocate.allocate();\n context.modelMatrix = multiplyMat4Mat4(m, lastMatrix, matrix);\n mat4Allocate.free(matrix);\n }\n } else {\n // 转化context的matrix为lastMatrix\n mat3Tomat4(matrix, group.globalTransMatrix);\n context.modelMatrix = matrix;\n }\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.beforePickItem) {\n const result = drawContribution.beforePickItem(group, this, point, params, { parentMatrix });\n if (result) {\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n return result as PickResult;\n }\n }\n }\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n const currentGroupMatrix = matrixAllocate.allocateByObj(parentMatrix);\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // todo: 支持带有path的group的选中\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过(如果是3d模式,那么继续)\n if (!insideGroup && !group.stage.camera) {\n return result;\n }\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n currentGroupMatrix.multiply(\n transMatrix.a,\n transMatrix.b,\n transMatrix.c,\n transMatrix.d,\n transMatrix.e,\n transMatrix.f\n );\n if (group.attribute.childrenPickable !== false) {\n foreach(\n group,\n DefaultAttribute.zIndex,\n (graphic: IGraphic) => {\n if (graphic.isContainer) {\n // 偏移scrollX和scrollY\n const newPoint: IPoint = new Point(point.x, point.y);\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n result = this.pickGroup(graphic as IGroup, newPoint, currentGroupMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // 偏移scrollX和scrollY\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n const pickedItem = this.pickItem(graphic, newPoint, params);\n result.graphic = pickedItem;\n }\n return !!result.graphic || !!result.group;\n },\n true,\n !!context.camera\n );\n }\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n\n if (!result.graphic && !result.group && groupPicked && !group.stage.camera) {\n result.group = group;\n }\n matrixAllocate.free(currentGroupMatrix);\n return result;\n }\n\n // todo: switch统一改为数字map\n abstract pickItem(graphic: IGraphic, point: IPointLike, params: IPickParams): IGraphic | null;\n\n protected selectPicker(graphic: IGraphic): IGraphicPicker | null {\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/picker/picker-service.ts"],"names":[],"mappings":"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","file":"picker-service.js","sourcesContent":["import type { IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport { Matrix, Point, IBounds } from '@visactor/vutils';\nimport { inject, injectable, named } from 'inversify';\nimport { foreach } from '../common/sort';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n IContext2d,\n IGraphic,\n IGroup,\n EnvType,\n IGlobal,\n IPickerService,\n IGraphicPicker,\n IPickParams,\n PickResult,\n IPickItemInterceptorContribution,\n IContributionProvider\n} from '../interface';\nimport { DefaultAttribute, getTheme, mat3Tomat4, multiplyMat4Mat4 } from '../graphic';\nimport { mat4Allocate, matrixAllocate } from '../allocator/matrix-allocate';\nimport { PickItemInterceptor } from './pick-interceptor';\nimport { VGlobal } from '../constants';\n\nexport const GraphicPicker = Symbol.for('GraphicPicker');\n\nexport const PickerService = Symbol.for('PickerService');\n\n@injectable()\nexport abstract class DefaultPickService implements IPickerService {\n type: string = 'default';\n declare pickerMap: Map<number, IGraphicPicker>;\n declare pickContext?: IContext2d;\n declare InterceptorContributions: IPickItemInterceptorContribution[];\n\n constructor(\n @inject(VGlobal) public readonly global: IGlobal,\n // 拦截器\n @inject(ContributionProvider)\n @named(PickItemInterceptor)\n protected readonly pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>\n ) {}\n\n protected _init() {\n this.InterceptorContributions = this.pickItemInterceptorContributions\n .getContributions()\n .sort((a, b) => a.order - b.order);\n }\n\n abstract configure(global: IGlobal, env: EnvType): void;\n\n // todo: params支持\n // todo: 性能优化\n pick(graphics: IGraphic[], point: IPoint, params: IPickParams): PickResult {\n let result: PickResult = {\n graphic: null,\n group: null\n };\n params.pickerService = this;\n let offsetX = 0;\n let offsetY = 0;\n if (params && params.bounds) {\n if (!params.bounds.contains(point.x, point.y)) {\n return result;\n }\n offsetX = params.bounds.x1;\n offsetY = params.bounds.y1;\n }\n if (this.pickContext) {\n this.pickContext.inuse = true;\n }\n params.pickContext = this.pickContext;\n this.pickContext && this.pickContext.clearMatrix(true, 1);\n\n const parentMatrix = new Matrix(1, 0, 0, 1, offsetX, offsetY);\n let group: IGroup;\n for (let i = graphics.length - 1; i >= 0; i--) {\n if (graphics[i].isContainer) {\n result = this.pickGroup(graphics[i] as IGroup, point, parentMatrix, params);\n } else {\n result.graphic = this.pickItem(graphics[i], point, parentMatrix, params);\n }\n if (result.graphic) {\n break;\n }\n if (!group) {\n group = result.group;\n }\n }\n if (!result.graphic) {\n result.group = group;\n }\n if (this.pickContext) {\n this.pickContext.inuse = false;\n }\n\n // 判断是否有shadow-dom\n if (result.graphic) {\n let g = result.graphic;\n while (g.parent) {\n g = g.parent;\n }\n if (g.shadowHost) {\n result.params = {\n shadowTarget: result.graphic\n };\n result.graphic = g.shadowHost;\n }\n }\n return result;\n }\n\n containsPoint(graphic: IGraphic, point: IPointLike, params: IPickParams): boolean {\n return !!this.pickItem(graphic, point, null, params);\n }\n\n // TODO: 支持3d模式的拾取和自定义path的拾取\n pickGroup(group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams): PickResult {\n let result: PickResult = {\n group: null,\n graphic: null\n };\n if (group.attribute.visibleAll === false) {\n return result;\n }\n const context = params.pickContext;\n const lastMatrix = context.modelMatrix;\n // 如果是3d,那么需要生成modelMatrix\n if (context.camera) {\n const m = group.transMatrix;\n const matrix = mat4Allocate.allocate();\n mat3Tomat4(matrix, m);\n if (lastMatrix) {\n if (matrix) {\n const m = mat4Allocate.allocate();\n context.modelMatrix = multiplyMat4Mat4(m, lastMatrix, matrix);\n mat4Allocate.free(matrix);\n }\n } else {\n // 转化context的matrix为lastMatrix\n mat3Tomat4(matrix, group.globalTransMatrix);\n context.modelMatrix = matrix;\n }\n }\n // 添加拦截器\n if (this.InterceptorContributions.length) {\n for (let i = 0; i < this.InterceptorContributions.length; i++) {\n const drawContribution = this.InterceptorContributions[i];\n if (drawContribution.beforePickItem) {\n const result = drawContribution.beforePickItem(group, this, point, params, { parentMatrix });\n if (result) {\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n return result as PickResult;\n }\n }\n }\n }\n // 转换坐标空间\n const transMatrix = group.transMatrix;\n const currentGroupMatrix = matrixAllocate.allocateByObj(parentMatrix);\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // todo: 支持带有path的group的选中\n const insideGroup = group.AABBBounds.containsPoint(newPoint);\n // 如果group没有被选中,直接跳过(如果是3d模式,那么继续)\n if (!insideGroup && !group.stage.camera) {\n return result;\n }\n // pickGroup,Group目前只支持拦截模式(用于shadow节点)\n const pickedItem = this.pickItem(group, newPoint.clone(), parentMatrix, params);\n if (pickedItem) {\n result.graphic = pickedItem;\n }\n const groupPicked = group.attribute.pickable !== false && insideGroup;\n\n currentGroupMatrix.multiply(\n transMatrix.a,\n transMatrix.b,\n transMatrix.c,\n transMatrix.d,\n transMatrix.e,\n transMatrix.f\n );\n if (group.attribute.childrenPickable !== false && !pickedItem) {\n foreach(\n group,\n DefaultAttribute.zIndex,\n (graphic: IGraphic) => {\n if (graphic.isContainer) {\n // 偏移scrollX和scrollY\n const newPoint: IPoint = new Point(point.x, point.y);\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n result = this.pickGroup(graphic as IGroup, newPoint, currentGroupMatrix, params);\n } else {\n const newPoint: IPoint = new Point(point.x, point.y);\n currentGroupMatrix.transformPoint(newPoint, newPoint);\n // 偏移scrollX和scrollY\n const theme = getTheme(group).group;\n const { scrollX = theme.scrollX, scrollY = theme.scrollY } = group.attribute;\n newPoint.x -= scrollX;\n newPoint.y -= scrollY;\n const pickedItem = this.pickItem(graphic, newPoint, parentMatrix, params);\n result.graphic = pickedItem;\n }\n return !!result.graphic || !!result.group;\n },\n true,\n !!context.camera\n );\n }\n if (context.modelMatrix !== lastMatrix) {\n mat4Allocate.free(context.modelMatrix);\n }\n context.modelMatrix = lastMatrix;\n\n if (!result.graphic && !result.group && groupPicked && !group.stage.camera) {\n result.group = group;\n }\n matrixAllocate.free(currentGroupMatrix);\n return result;\n }\n\n // todo: switch统一改为数字map\n abstract pickItem(\n graphic: IGraphic,\n point: IPointLike,\n parentMatrix: IMatrix | null,\n params: IPickParams\n ): IGraphic | null;\n\n protected selectPicker(graphic: IGraphic): IGraphicPicker | null {\n const picker = this.pickerMap.get(graphic.numberType);\n if (!picker) {\n return null;\n }\n return picker;\n }\n}\n"]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { IGraphic, IGroup, IGroupAttribute } from '../../interface';
|
|
2
2
|
import type { IPlugin, IPluginService } from '../../interface';
|
|
3
|
+
import { AABBBounds } from '@visactor/vutils';
|
|
3
4
|
export declare class FlexLayoutPlugin implements IPlugin {
|
|
4
5
|
name: 'FlexLayoutPlugin';
|
|
5
6
|
activeEvent: 'onRegister';
|
|
6
7
|
pluginService: IPluginService;
|
|
7
8
|
id: number;
|
|
8
9
|
key: string;
|
|
10
|
+
tempBounds: AABBBounds;
|
|
9
11
|
tryLayout(graphic: IGraphic): void;
|
|
10
12
|
layoutMain(p: IGroup, children: IGraphic[], justifyContent: IGroupAttribute['justifyContent'], main: {
|
|
11
13
|
len: number;
|
|
@@ -4,20 +4,30 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.FlexLayoutPlugin = void 0;
|
|
6
6
|
|
|
7
|
-
const graphic_1 = require("../../graphic"), modules_1 = require("../../modules"), generator_1 = require("../../common/generator");
|
|
7
|
+
const graphic_1 = require("../../graphic"), modules_1 = require("../../modules"), generator_1 = require("../../common/generator"), util_1 = require("../../canvas/util"), utils_1 = require("../../common/utils"), vutils_1 = require("@visactor/vutils");
|
|
8
8
|
|
|
9
9
|
class FlexLayoutPlugin {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.name = "FlexLayoutPlugin", this.activeEvent = "onRegister", this.id = generator_1.Generator.GenAutoIncrementId(),
|
|
12
|
-
this.key = this.name + this.id;
|
|
12
|
+
this.key = this.name + this.id, this.tempBounds = new vutils_1.AABBBounds;
|
|
13
13
|
}
|
|
14
14
|
tryLayout(graphic) {
|
|
15
15
|
const p = graphic.parent;
|
|
16
|
-
if (!p) return;
|
|
16
|
+
if (!p || !graphic.needUpdateLayout()) return;
|
|
17
17
|
const theme = (0, graphic_1.getTheme)(p).group, {display: display = theme.display} = p.attribute;
|
|
18
18
|
if ("flex" !== display) return;
|
|
19
|
-
const {
|
|
20
|
-
|
|
19
|
+
const {flexDirection: flexDirection = theme.flexDirection, flexWrap: flexWrap = theme.flexWrap, justifyContent: justifyContent = theme.justifyContent, alignItems: alignItems = theme.alignItems, alignContent: alignContent = theme.alignContent, clip: clip = theme.clip} = p.attribute;
|
|
20
|
+
let childrenWidth = 0, childrenHeight = 0, boundsLegal = 0;
|
|
21
|
+
if (p.forEachChildren((child => {
|
|
22
|
+
const bounds = child.AABBBounds;
|
|
23
|
+
"column" === flexDirection || "column-reverse" === flexDirection ? (childrenHeight += bounds.height(),
|
|
24
|
+
childrenWidth = Math.max(childrenWidth, bounds.width())) : (childrenWidth += bounds.width(),
|
|
25
|
+
childrenHeight = Math.max(childrenHeight, bounds.height())), boundsLegal += bounds.x1,
|
|
26
|
+
boundsLegal += bounds.y1, boundsLegal += bounds.x2, boundsLegal += bounds.y2;
|
|
27
|
+
})), !isFinite(boundsLegal)) return;
|
|
28
|
+
const width = p.attribute.width || childrenWidth, height = p.attribute.height || childrenHeight;
|
|
29
|
+
p.attribute.width || (p.attribute.width = 0), p.attribute.height || (p.attribute.height = 0),
|
|
30
|
+
this.tempBounds.copy(p._AABBBounds);
|
|
21
31
|
const result = {
|
|
22
32
|
main: {
|
|
23
33
|
len: width,
|
|
@@ -68,15 +78,15 @@ class FlexLayoutPlugin {
|
|
|
68
78
|
let lastIdx = 0;
|
|
69
79
|
if (mainList.forEach((s => {
|
|
70
80
|
this.layoutMain(p, children, justifyContent, main, mianLenArray, lastIdx, s), lastIdx = s.idx + 1;
|
|
71
|
-
})), crossLen = mainList.reduce(((a, b) => a + b.crossLen), 0), 1 === mainList.length) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
} else if ("flex-start" === alignContent) {
|
|
81
|
+
})), crossLen = mainList.reduce(((a, b) => a + b.crossLen), 0), 1 === mainList.length) if ("flex-end" === alignItems) {
|
|
82
|
+
const anchorPos = cross.len;
|
|
83
|
+
this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);
|
|
84
|
+
} else if ("center" === alignItems) {
|
|
85
|
+
const anchorPos = cross.len / 2;
|
|
86
|
+
this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);
|
|
87
|
+
} else children.forEach((child => {
|
|
88
|
+
child.attribute[cross.field] = getPadding(child, cross.field);
|
|
89
|
+
})); else if ("flex-start" === alignContent) {
|
|
80
90
|
lastIdx = 0;
|
|
81
91
|
let anchorPos = 0;
|
|
82
92
|
mainList.forEach(((s, i) => {
|
|
@@ -107,37 +117,40 @@ class FlexLayoutPlugin {
|
|
|
107
117
|
lastIdx = s.idx + 1, anchorPos += s.crossLen + 2 * padding;
|
|
108
118
|
}));
|
|
109
119
|
}
|
|
120
|
+
children.forEach(((child, idx) => {
|
|
121
|
+
child.addUpdateBoundTag(), child.addUpdatePositionTag(), child.clearUpdateLayoutTag();
|
|
122
|
+
})), p.addUpdateLayoutTag(), clip || this.tempBounds.equals(p.AABBBounds) || this.tryLayout(p);
|
|
110
123
|
}
|
|
111
124
|
layoutMain(p, children, justifyContent, main, mianLenArray, lastIdx, currSeg) {
|
|
112
125
|
if ("flex-start" === justifyContent) {
|
|
113
126
|
let pos = 0;
|
|
114
|
-
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
|
|
127
|
+
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos + getPadding(children[i], main.field),
|
|
115
128
|
pos += mianLenArray[i].mainLen;
|
|
116
129
|
} else if ("flex-end" === justifyContent) {
|
|
117
130
|
let pos = main.len;
|
|
118
|
-
for (let i = lastIdx; i <= currSeg.idx; i++) pos -= mianLenArray[i].mainLen, children[i].attribute[main.field] = pos;
|
|
131
|
+
for (let i = lastIdx; i <= currSeg.idx; i++) pos -= mianLenArray[i].mainLen, children[i].attribute[main.field] = pos + getPadding(children[i], main.field);
|
|
119
132
|
} else if ("space-around" === justifyContent) if (currSeg.mainLen >= main.len) {
|
|
120
133
|
let pos = 0;
|
|
121
|
-
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
|
|
134
|
+
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos + getPadding(children[i], main.field),
|
|
122
135
|
pos += mianLenArray[i].mainLen;
|
|
123
136
|
} else {
|
|
124
137
|
const size = currSeg.idx - lastIdx + 1, padding = (main.len - currSeg.mainLen) / size / 2;
|
|
125
138
|
let pos = padding;
|
|
126
|
-
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
|
|
139
|
+
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos + getPadding(children[i], main.field),
|
|
127
140
|
pos += mianLenArray[i].mainLen + 2 * padding;
|
|
128
141
|
} else if ("space-between" === justifyContent) if (currSeg.mainLen >= main.len) {
|
|
129
142
|
let pos = 0;
|
|
130
|
-
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
|
|
143
|
+
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos + getPadding(children[i], main.field),
|
|
131
144
|
pos += mianLenArray[i].mainLen;
|
|
132
145
|
} else {
|
|
133
146
|
const size = currSeg.idx - lastIdx + 1, padding = (main.len - currSeg.mainLen) / (2 * size - 2);
|
|
134
147
|
let pos = 0;
|
|
135
|
-
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos,
|
|
148
|
+
for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[main.field] = pos + getPadding(children[i], main.field),
|
|
136
149
|
pos += mianLenArray[i].mainLen + 2 * padding;
|
|
137
150
|
}
|
|
138
151
|
}
|
|
139
152
|
layoutCross(children, alignItem, cross, anchorPos, lenArray, currSeg, lastIdx) {
|
|
140
|
-
if ("flex-end" === alignItem) for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen; else if ("center" === alignItem) for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen / 2; else for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos;
|
|
153
|
+
if ("flex-end" === alignItem) for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen + getPadding(children[i], cross.field); else if ("center" === alignItem) for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen / 2 + getPadding(children[i], cross.field); else for (let i = lastIdx; i <= currSeg.idx; i++) children[i].attribute[cross.field] = anchorPos + getPadding(children[i], cross.field);
|
|
141
154
|
}
|
|
142
155
|
activate(context) {
|
|
143
156
|
this.pluginService = context, modules_1.graphicService.hooks.onAttributeUpdate.tap(this.key, (graphic => {
|
|
@@ -152,5 +165,13 @@ class FlexLayoutPlugin {
|
|
|
152
165
|
}
|
|
153
166
|
}
|
|
154
167
|
|
|
168
|
+
function getPadding(graphic, field) {
|
|
169
|
+
if (!graphic.attribute.boundsPadding) return 0;
|
|
170
|
+
if ((0, util_1.isNumber)(graphic.attribute.boundsPadding)) return graphic.attribute.boundsPadding;
|
|
171
|
+
if ((0, vutils_1.isArray)(graphic.attribute.boundsPadding) && 1 === graphic.attribute.boundsPadding.length) return graphic.attribute.boundsPadding[0];
|
|
172
|
+
const paddingArray = (0, utils_1.parsePadding)(graphic.attribute.boundsPadding);
|
|
173
|
+
return "x" === field ? paddingArray[3] : "y" === field ? paddingArray[0] : 0;
|
|
174
|
+
}
|
|
175
|
+
|
|
155
176
|
exports.FlexLayoutPlugin = FlexLayoutPlugin;
|
|
156
177
|
//# sourceMappingURL=flex-layout-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugins/builtin-plugin/flex-layout-plugin.ts"],"names":[],"mappings":"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","file":"flex-layout-plugin.js","sourcesContent":["import type { IGraphic, IGroup, IGroupAttribute } from '../../interface';\nimport { getTheme } from '../../graphic';\nimport { graphicService } from '../../modules';\nimport type { IPlugin, IPluginService } from '../../interface';\nimport { Generator } from '../../common/generator';\n\nexport class FlexLayoutPlugin implements IPlugin {\n name: 'FlexLayoutPlugin' = 'FlexLayoutPlugin';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n id: number = Generator.GenAutoIncrementId();\n key: string = this.name + this.id;\n\n tryLayout(graphic: IGraphic) {\n const p = graphic.parent;\n if (!p) {\n return;\n }\n const theme = getTheme(p).group;\n const { display = theme.display } = p.attribute;\n if (display !== 'flex') {\n return;\n }\n const {\n width,\n height,\n flexDirection = theme.flexDirection,\n flexWrap = theme.flexWrap,\n justifyContent = theme.justifyContent,\n alignItems = theme.alignItems,\n alignContent = theme.alignContent\n } = p.attribute;\n if (!(width && height)) {\n return;\n }\n\n const result = {\n main: { len: width, field: 'x' },\n cross: { len: height, field: 'y' },\n dir: 1\n };\n const main = result.main;\n const cross = result.cross;\n if (flexDirection === 'row-reverse') {\n result.dir = -1;\n } else if (flexDirection === 'column') {\n main.len = height;\n cross.len = width;\n main.field = 'y';\n cross.field = 'x';\n } else if (flexDirection === 'column-reverse') {\n main.len = height;\n cross.len = width;\n main.field = 'y';\n cross.field = 'x';\n result.dir = -1;\n }\n\n // 计算宽度\n let mainLen = 0;\n let crossLen = 0;\n const mianLenArray: { mainLen: number; crossLen: number }[] = [];\n p.forEachChildren((c: IGraphic) => {\n const b = c.AABBBounds;\n const ml = main.field === 'x' ? b.width() : b.height();\n const cl = cross.field === 'x' ? b.width() : b.height();\n mianLenArray.push({ mainLen: ml, crossLen: cl });\n mainLen += ml;\n crossLen = Math.max(crossLen, cl);\n });\n // 解析main\n const mainList: { idx: number; mainLen: number; crossLen: number }[] = [];\n if (mainLen > main.len && flexWrap === 'wrap') {\n let tempMainL = 0;\n let tempCrossL = 0;\n mianLenArray.forEach(({ mainLen, crossLen }, i) => {\n if (tempMainL + mainLen > main.len) {\n if (tempMainL === 0) {\n mainList.push({ idx: i, mainLen: tempMainL + mainLen, crossLen });\n tempMainL = 0;\n tempCrossL = 0;\n } else {\n mainList.push({ idx: i - 1, mainLen: tempMainL, crossLen });\n tempMainL = mainLen;\n tempCrossL = crossLen;\n }\n } else {\n tempMainL += mainLen;\n tempCrossL = Math.max(tempCrossL, crossLen);\n }\n });\n mainList.push({ idx: mianLenArray.length - 1, mainLen: tempMainL, crossLen: tempCrossL });\n } else {\n mainList.push({ idx: mianLenArray.length - 1, mainLen: mainLen, crossLen });\n }\n\n const children = p.getChildren() as IGraphic[];\n\n // 布局main\n let lastIdx: number = 0;\n mainList.forEach(s => {\n this.layoutMain(p, children, justifyContent, main, mianLenArray, lastIdx, s);\n lastIdx = s.idx + 1;\n });\n\n crossLen = mainList.reduce((a, b) => a + b.crossLen, 0);\n\n // 布局cross\n if (mainList.length === 1) {\n if (alignItems === 'flex-end') {\n const anchorPos = cross.len;\n this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);\n } else if (alignItems === 'center') {\n const anchorPos = cross.len / 2;\n this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);\n }\n } else {\n if (alignContent === 'flex-start') {\n lastIdx = 0;\n let anchorPos = 0;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen;\n });\n } else if (alignContent === 'center') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / 2);\n let anchorPos = padding;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'center', cross, anchorPos + s.crossLen / 2, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen;\n });\n } else if (alignContent === 'space-around') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / mainList.length / 2);\n let anchorPos = padding;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen + padding * 2;\n });\n } else if (alignContent === 'space-between') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / (mainList.length * 2 - 2));\n let anchorPos = 0;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen + padding * 2;\n });\n }\n }\n }\n\n layoutMain(\n p: IGroup,\n children: IGraphic[],\n justifyContent: IGroupAttribute['justifyContent'],\n main: { len: number; field: string },\n mianLenArray: { mainLen: number; crossLen: number }[],\n lastIdx: number,\n currSeg: { idx: number; mainLen: number; crossLen: number }\n ) {\n if (justifyContent === 'flex-start') {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen;\n }\n } else if (justifyContent === 'flex-end') {\n let pos = main.len;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n pos -= mianLenArray[i].mainLen;\n children[i].attribute[main.field] = pos;\n }\n } else if (justifyContent === 'space-around') {\n if (currSeg.mainLen >= main.len) {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen;\n }\n } else {\n const size = currSeg.idx - lastIdx + 1;\n const padding = (main.len - currSeg.mainLen) / size / 2;\n let pos = padding;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen + padding * 2;\n }\n }\n } else if (justifyContent === 'space-between') {\n if (currSeg.mainLen >= main.len) {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen;\n }\n } else {\n const size = currSeg.idx - lastIdx + 1;\n const padding = (main.len - currSeg.mainLen) / (size * 2 - 2);\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos;\n pos += mianLenArray[i].mainLen + padding * 2;\n }\n }\n }\n }\n\n layoutCross(\n children: IGraphic[],\n alignItem: IGroupAttribute['alignItems'],\n cross: { len: number; field: string },\n anchorPos: number,\n lenArray: { mainLen: number; crossLen: number }[],\n currSeg: { idx: number; mainLen: number; crossLen: number },\n lastIdx: number\n ) {\n if (alignItem === 'flex-end') {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen;\n }\n } else if (alignItem === 'center') {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen / 2;\n }\n } else {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos;\n }\n }\n }\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n graphicService.hooks.onAttributeUpdate.tap(this.key, graphic => {\n if (graphic.glyphHost) {\n graphic = graphic.glyphHost;\n }\n this.tryLayout(graphic);\n });\n graphicService.hooks.onSetStage.tap(this.key, graphic => {\n if (graphic.glyphHost) {\n graphic = graphic.glyphHost;\n }\n this.tryLayout(graphic);\n });\n }\n deactivate(context: IPluginService): void {\n graphicService.hooks.onAttributeUpdate.taps = graphicService.hooks.onAttributeUpdate.taps.filter(item => {\n return item.name !== this.key;\n });\n graphicService.hooks.onSetStage.taps = graphicService.hooks.onSetStage.taps.filter(item => {\n return item.name !== this.key;\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugins/builtin-plugin/flex-layout-plugin.ts"],"names":[],"mappings":"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","file":"flex-layout-plugin.js","sourcesContent":["import type { IGraphic, IGroup, IGroupAttribute, IStage } from '../../interface';\nimport { getTheme } from '../../graphic';\nimport { graphicService } from '../../modules';\nimport type { IPlugin, IPluginService } from '../../interface';\nimport { Generator } from '../../common/generator';\nimport { isNumber } from '../../canvas/util';\nimport { parsePadding } from '../../common/utils';\nimport { AABBBounds, isArray } from '@visactor/vutils';\n\nexport class FlexLayoutPlugin implements IPlugin {\n name: 'FlexLayoutPlugin' = 'FlexLayoutPlugin';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n id: number = Generator.GenAutoIncrementId();\n key: string = this.name + this.id;\n tempBounds: AABBBounds = new AABBBounds();\n\n tryLayout(graphic: IGraphic) {\n const p = graphic.parent;\n if (!p || !graphic.needUpdateLayout()) {\n return;\n }\n const theme = getTheme(p).group;\n const { display = theme.display } = p.attribute;\n if (display !== 'flex') {\n return;\n }\n const {\n // width,\n // height,\n flexDirection = theme.flexDirection,\n flexWrap = theme.flexWrap,\n justifyContent = theme.justifyContent,\n alignItems = theme.alignItems,\n alignContent = theme.alignContent,\n clip = theme.clip\n } = p.attribute;\n // if (!(width && height)) {\n // return;\n // }\n\n let childrenWidth = 0;\n let childrenHeight = 0;\n let boundsLegal = 0;\n p.forEachChildren((child: IGraphic) => {\n const bounds = child.AABBBounds;\n if (flexDirection === 'column' || flexDirection === 'column-reverse') {\n childrenHeight += bounds.height();\n childrenWidth = Math.max(childrenWidth, bounds.width());\n } else {\n childrenWidth += bounds.width();\n childrenHeight = Math.max(childrenHeight, bounds.height());\n }\n boundsLegal += bounds.x1;\n boundsLegal += bounds.y1;\n boundsLegal += bounds.x2;\n boundsLegal += bounds.y2;\n });\n // judgement children bounds legal\n if (!isFinite(boundsLegal)) {\n return;\n }\n const width = p.attribute.width || childrenWidth;\n const height = p.attribute.height || childrenHeight;\n if (!p.attribute.width) {\n p.attribute.width = 0;\n }\n if (!p.attribute.height) {\n p.attribute.height = 0;\n }\n\n // 这里使用p._AABBBounds可能会将非布局造成的bounds更新也会触发重新布局\n // TODO: 增加layout前预处理,在非递归布局前将子节点及其全部父节点_AABBBounds更新\n this.tempBounds.copy(p._AABBBounds);\n const result = {\n main: { len: width, field: 'x' },\n cross: { len: height, field: 'y' },\n dir: 1\n };\n const main = result.main;\n const cross = result.cross;\n if (flexDirection === 'row-reverse') {\n result.dir = -1;\n } else if (flexDirection === 'column') {\n main.len = height;\n cross.len = width;\n main.field = 'y';\n cross.field = 'x';\n } else if (flexDirection === 'column-reverse') {\n main.len = height;\n cross.len = width;\n main.field = 'y';\n cross.field = 'x';\n result.dir = -1;\n }\n\n // 计算宽度\n let mainLen = 0;\n let crossLen = 0;\n const mianLenArray: { mainLen: number; crossLen: number }[] = [];\n p.forEachChildren((c: IGraphic) => {\n const b = c.AABBBounds;\n const ml = main.field === 'x' ? b.width() : b.height();\n const cl = cross.field === 'x' ? b.width() : b.height();\n mianLenArray.push({ mainLen: ml, crossLen: cl });\n mainLen += ml;\n crossLen = Math.max(crossLen, cl);\n });\n // 解析main\n const mainList: { idx: number; mainLen: number; crossLen: number }[] = [];\n if (mainLen > main.len && flexWrap === 'wrap') {\n let tempMainL = 0;\n let tempCrossL = 0;\n mianLenArray.forEach(({ mainLen, crossLen }, i) => {\n if (tempMainL + mainLen > main.len) {\n if (tempMainL === 0) {\n mainList.push({ idx: i, mainLen: tempMainL + mainLen, crossLen });\n tempMainL = 0;\n tempCrossL = 0;\n } else {\n mainList.push({ idx: i - 1, mainLen: tempMainL, crossLen });\n tempMainL = mainLen;\n tempCrossL = crossLen;\n }\n } else {\n tempMainL += mainLen;\n tempCrossL = Math.max(tempCrossL, crossLen);\n }\n });\n mainList.push({ idx: mianLenArray.length - 1, mainLen: tempMainL, crossLen: tempCrossL });\n } else {\n mainList.push({ idx: mianLenArray.length - 1, mainLen: mainLen, crossLen });\n }\n\n const children = p.getChildren() as IGraphic[];\n\n // 布局main\n let lastIdx: number = 0;\n mainList.forEach(s => {\n this.layoutMain(p, children, justifyContent, main, mianLenArray, lastIdx, s);\n lastIdx = s.idx + 1;\n });\n\n crossLen = mainList.reduce((a, b) => a + b.crossLen, 0);\n\n // 布局cross\n if (mainList.length === 1) {\n if (alignItems === 'flex-end') {\n const anchorPos = cross.len;\n this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);\n } else if (alignItems === 'center') {\n const anchorPos = cross.len / 2;\n this.layoutCross(children, alignItems, cross, anchorPos, mianLenArray, mainList[0], 0);\n } else {\n children.forEach(child => {\n child.attribute[cross.field] = getPadding(child, cross.field);\n });\n }\n } else {\n if (alignContent === 'flex-start') {\n lastIdx = 0;\n let anchorPos = 0;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen;\n });\n } else if (alignContent === 'center') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / 2);\n let anchorPos = padding;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'center', cross, anchorPos + s.crossLen / 2, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen;\n });\n } else if (alignContent === 'space-around') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / mainList.length / 2);\n let anchorPos = padding;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen + padding * 2;\n });\n } else if (alignContent === 'space-between') {\n lastIdx = 0;\n const padding = Math.max(0, (cross.len - crossLen) / (mainList.length * 2 - 2));\n let anchorPos = 0;\n mainList.forEach((s, i) => {\n this.layoutCross(children, 'flex-start', cross, anchorPos, mianLenArray, mainList[i], lastIdx);\n lastIdx = s.idx + 1;\n anchorPos += s.crossLen + padding * 2;\n });\n }\n }\n\n // update children\n children.forEach((child, idx) => {\n child.addUpdateBoundTag();\n child.addUpdatePositionTag();\n child.clearUpdateLayoutTag();\n });\n\n p.addUpdateLayoutTag();\n // 更新父级元素的layout,直到存在clip\n if (!clip && !this.tempBounds.equals(p.AABBBounds)) {\n // 判断父元素包围盒是否发生变化\n this.tryLayout(p);\n }\n }\n\n layoutMain(\n p: IGroup,\n children: IGraphic[],\n justifyContent: IGroupAttribute['justifyContent'],\n main: { len: number; field: string },\n mianLenArray: { mainLen: number; crossLen: number }[],\n lastIdx: number,\n currSeg: { idx: number; mainLen: number; crossLen: number }\n ) {\n if (justifyContent === 'flex-start') {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos + getPadding(children[i], main.field);\n pos += mianLenArray[i].mainLen;\n }\n } else if (justifyContent === 'flex-end') {\n let pos = main.len;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n pos -= mianLenArray[i].mainLen;\n children[i].attribute[main.field] = pos + getPadding(children[i], main.field);\n }\n } else if (justifyContent === 'space-around') {\n if (currSeg.mainLen >= main.len) {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos + getPadding(children[i], main.field);\n pos += mianLenArray[i].mainLen;\n }\n } else {\n const size = currSeg.idx - lastIdx + 1;\n const padding = (main.len - currSeg.mainLen) / size / 2;\n let pos = padding;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos + getPadding(children[i], main.field);\n pos += mianLenArray[i].mainLen + padding * 2;\n }\n }\n } else if (justifyContent === 'space-between') {\n if (currSeg.mainLen >= main.len) {\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos + getPadding(children[i], main.field);\n pos += mianLenArray[i].mainLen;\n }\n } else {\n const size = currSeg.idx - lastIdx + 1;\n const padding = (main.len - currSeg.mainLen) / (size * 2 - 2);\n let pos = 0;\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[main.field] = pos + getPadding(children[i], main.field);\n pos += mianLenArray[i].mainLen + padding * 2;\n }\n }\n }\n }\n\n layoutCross(\n children: IGraphic[],\n alignItem: IGroupAttribute['alignItems'],\n cross: { len: number; field: string },\n anchorPos: number,\n lenArray: { mainLen: number; crossLen: number }[],\n currSeg: { idx: number; mainLen: number; crossLen: number },\n lastIdx: number\n ) {\n if (alignItem === 'flex-end') {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos - lenArray[i].crossLen + getPadding(children[i], cross.field);\n }\n } else if (alignItem === 'center') {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] =\n anchorPos - lenArray[i].crossLen / 2 + getPadding(children[i], cross.field);\n }\n } else {\n for (let i = lastIdx; i <= currSeg.idx; i++) {\n children[i].attribute[cross.field] = anchorPos + getPadding(children[i], cross.field);\n }\n }\n }\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n graphicService.hooks.onAttributeUpdate.tap(this.key, graphic => {\n if (graphic.glyphHost) {\n graphic = graphic.glyphHost;\n }\n this.tryLayout(graphic);\n });\n graphicService.hooks.onSetStage.tap(this.key, graphic => {\n if (graphic.glyphHost) {\n graphic = graphic.glyphHost;\n }\n this.tryLayout(graphic);\n });\n }\n deactivate(context: IPluginService): void {\n graphicService.hooks.onAttributeUpdate.taps = graphicService.hooks.onAttributeUpdate.taps.filter(item => {\n return item.name !== this.key;\n });\n graphicService.hooks.onSetStage.taps = graphicService.hooks.onSetStage.taps.filter(item => {\n return item.name !== this.key;\n });\n }\n}\n\nfunction getPadding(graphic: IGraphic, field: string): number {\n if (!graphic.attribute.boundsPadding) {\n return 0;\n } else if (isNumber(graphic.attribute.boundsPadding)) {\n return graphic.attribute.boundsPadding as number;\n } else if (isArray(graphic.attribute.boundsPadding) && graphic.attribute.boundsPadding.length === 1) {\n return graphic.attribute.boundsPadding[0];\n }\n const paddingArray = parsePadding(graphic.attribute.boundsPadding);\n if (field === 'x') {\n return paddingArray[3];\n } else if (field === 'y') {\n return paddingArray[0];\n }\n return 0;\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IGraphic, IPlugin, IPluginService, IRenderService, IGroup } from '../../interface';
|
|
2
|
+
export declare class HtmlAttributePlugin implements IPlugin {
|
|
3
|
+
name: 'HtmlAttributePlugin';
|
|
4
|
+
activeEvent: 'onRegister';
|
|
5
|
+
pluginService: IPluginService;
|
|
6
|
+
_uid: number;
|
|
7
|
+
key: string;
|
|
8
|
+
activate(context: IPluginService): void;
|
|
9
|
+
deactivate(context: IPluginService): void;
|
|
10
|
+
protected drawHTML(renderService: IRenderService): void;
|
|
11
|
+
renderGroupHTML(group: IGroup): void;
|
|
12
|
+
renderGraphicHTML(graphic: IGraphic): void;
|
|
13
|
+
}
|