@visactor/vrender-core 0.21.11 → 0.22.0-vstory.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/animate/Ticker/default-ticker.d.ts +2 -0
- package/cjs/animate/Ticker/default-ticker.js +7 -1
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/animate.js +2 -2
- package/cjs/animate/animate.js.map +1 -1
- package/cjs/animate/custom-animate.js +14 -25
- package/cjs/animate/custom-animate.js.map +1 -1
- package/cjs/animate/easing-func.d.ts +1 -0
- package/cjs/animate/easing-func.js +16 -0
- package/cjs/animate/easing-func.js.map +1 -0
- package/cjs/animate/easing.d.ts +4 -0
- package/cjs/animate/easing.js +24 -1
- package/cjs/animate/easing.js.map +1 -1
- package/cjs/animate/index.d.ts +1 -0
- package/cjs/animate/index.js +1 -1
- package/cjs/animate/index.js.map +1 -1
- package/cjs/color-string/store.js +1 -2
- package/cjs/common/3d-interceptor.js +2 -1
- package/cjs/common/bezier-utils.d.ts +3 -0
- package/cjs/common/bezier-utils.js +17 -2
- package/cjs/common/bezier-utils.js.map +1 -1
- package/cjs/common/custom-path2d.d.ts +4 -0
- package/cjs/common/custom-path2d.js +43 -11
- package/cjs/common/custom-path2d.js.map +1 -1
- package/cjs/common/render-area.d.ts +4 -0
- package/cjs/common/render-area.js +76 -17
- package/cjs/common/render-area.js.map +1 -1
- package/cjs/common/render-command-list.js +2 -1
- package/cjs/common/render-curve.d.ts +1 -1
- package/cjs/common/render-curve.js.map +1 -1
- package/cjs/common/segment/curve/arc.d.ts +4 -1
- package/cjs/common/segment/curve/arc.js +10 -1
- package/cjs/common/segment/curve/arc.js.map +1 -1
- package/cjs/common/segment/curve/base.d.ts +4 -1
- package/cjs/common/segment/curve/base.js.map +1 -1
- package/cjs/common/segment/curve/cubic-bezier.d.ts +5 -1
- package/cjs/common/segment/curve/cubic-bezier.js +24 -3
- package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
- package/cjs/common/segment/curve/curve-context.js +5 -4
- package/cjs/common/segment/curve/curve-context.js.map +1 -1
- package/cjs/common/segment/curve/ellipse.d.ts +4 -1
- package/cjs/common/segment/curve/ellipse.js +9 -0
- package/cjs/common/segment/curve/ellipse.js.map +1 -1
- package/cjs/common/segment/curve/line.d.ts +4 -1
- package/cjs/common/segment/curve/line.js +18 -0
- package/cjs/common/segment/curve/line.js.map +1 -1
- package/cjs/common/segment/curve/move.d.ts +4 -1
- package/cjs/common/segment/curve/move.js +9 -0
- package/cjs/common/segment/curve/move.js.map +1 -1
- package/cjs/common/segment/curve/path.d.ts +2 -1
- package/cjs/common/segment/curve/path.js +5 -2
- package/cjs/common/segment/curve/path.js.map +1 -1
- package/cjs/common/segment/curve/quadratic-bezier.d.ts +6 -2
- package/cjs/common/segment/curve/quadratic-bezier.js +23 -5
- package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/cjs/common/segment/step.js +1 -1
- package/cjs/common/segment/step.js.map +1 -1
- package/cjs/common/shape/rect.d.ts +1 -1
- package/cjs/common/shape/rect.js +30 -25
- package/cjs/common/shape/rect.js.map +1 -1
- package/cjs/common/store.js +1 -1
- package/cjs/core/contributions/env/base-contribution.d.ts +2 -0
- package/cjs/core/contributions/env/base-contribution.js +6 -0
- package/cjs/core/contributions/env/base-contribution.js.map +1 -1
- package/cjs/core/global.d.ts +2 -3
- package/cjs/core/global.js +7 -7
- package/cjs/core/global.js.map +1 -1
- package/cjs/graphic/builtin-symbol/rect.d.ts +2 -1
- package/cjs/graphic/builtin-symbol/rect.js +28 -0
- package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
- package/cjs/graphic/builtin-symbol/utils.d.ts +2 -1
- package/cjs/graphic/builtin-symbol/utils.js +5 -0
- package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
- package/cjs/graphic/config.js +20 -5
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/graphic.d.ts +1 -1
- package/cjs/graphic/graphic.js +20 -6
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/line.js +2 -2
- package/cjs/graphic/line.js.map +1 -1
- package/cjs/graphic/richtext/line.js +1 -1
- package/cjs/graphic/richtext/line.js.map +1 -1
- package/cjs/graphic/richtext/paragraph.d.ts +1 -1
- package/cjs/graphic/richtext/paragraph.js +37 -7
- package/cjs/graphic/richtext/paragraph.js.map +1 -1
- package/cjs/graphic/richtext/utils.d.ts +4 -0
- package/cjs/graphic/richtext/utils.js +19 -6
- package/cjs/graphic/richtext/utils.js.map +1 -1
- package/cjs/graphic/richtext/wrapper.d.ts +1 -0
- package/cjs/graphic/richtext/wrapper.js +1 -1
- package/cjs/graphic/richtext/wrapper.js.map +1 -1
- package/cjs/graphic/richtext.d.ts +7 -2
- package/cjs/graphic/richtext.js +37 -4
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +2 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interface/animate.d.ts +5 -39
- package/cjs/interface/animate.js.map +1 -1
- package/cjs/interface/color.js.map +1 -1
- package/cjs/interface/context.d.ts +1 -0
- package/cjs/interface/context.js.map +1 -1
- package/cjs/interface/global.d.ts +4 -1
- package/cjs/interface/global.js.map +1 -1
- package/cjs/interface/graphic/group.d.ts +1 -0
- package/cjs/interface/graphic/group.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/path.d.ts +1 -0
- package/cjs/interface/graphic/path.js.map +1 -1
- package/cjs/interface/graphic/rect.d.ts +1 -0
- package/cjs/interface/graphic/rect.js.map +1 -1
- package/cjs/interface/graphic/richText.d.ts +12 -0
- package/cjs/interface/graphic/richText.js.map +1 -1
- package/cjs/interface/graphic/symbol.d.ts +2 -0
- package/cjs/interface/graphic/symbol.js.map +1 -1
- package/cjs/interface/graphic.d.ts +12 -3
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/interface/path.d.ts +5 -0
- package/cjs/interface/path.js.map +1 -1
- package/cjs/interface/picker.d.ts +13 -0
- package/cjs/interface/picker.js.map +1 -1
- package/cjs/picker/constants.d.ts +2 -0
- package/cjs/picker/constants.js +3 -2
- package/cjs/picker/constants.js.map +1 -1
- package/cjs/picker/pick-interceptor.d.ts +7 -2
- package/cjs/picker/pick-interceptor.js +19 -2
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/picker/pick-modules.js +7 -4
- package/cjs/picker/pick-modules.js.map +1 -1
- package/cjs/picker/picker-service.d.ts +4 -2
- package/cjs/picker/picker-service.js +13 -12
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/edit-module.d.ts +17 -6
- package/cjs/plugins/builtin-plugin/edit-module.js +128 -42
- package/cjs/plugins/builtin-plugin/edit-module.js.map +1 -1
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.d.ts +88 -31
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js +537 -229
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
- package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
- package/cjs/render/contributions/render/area-render.d.ts +1 -1
- package/cjs/render/contributions/render/area-render.js +36 -16
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.d.ts +1 -0
- package/cjs/render/contributions/render/base-render.js +20 -2
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +7 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +16 -8
- package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.js +8 -3
- package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +2 -2
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +4 -4
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +30 -2
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/text-contribution-render.js +5 -3
- package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.js +2 -1
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/group-render.js +2 -2
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +3 -3
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/line-render.js +31 -9
- package/cjs/render/contributions/render/line-render.js.map +1 -1
- package/cjs/render/contributions/render/path-render.js.map +1 -1
- package/cjs/render/contributions/render/polygon-render.js.map +1 -1
- package/cjs/render/contributions/render/rect-render.js +2 -2
- package/cjs/render/contributions/render/rect-render.js.map +1 -1
- package/cjs/render/contributions/render/richtext-render.js +1 -1
- package/cjs/render/contributions/render/richtext-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.js +15 -13
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.d.ts +1 -2
- package/cjs/render/contributions/render/utils.js +4 -20
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/resource-loader/loader.js +1 -1
- package/cjs/resource-loader/loader.js.map +1 -1
- package/dist/index.es.js +8962 -7480
- package/es/animate/Ticker/default-ticker.d.ts +2 -0
- package/es/animate/Ticker/default-ticker.js +7 -1
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/animate.js +4 -5
- package/es/animate/animate.js.map +1 -1
- package/es/animate/custom-animate.js +14 -25
- package/es/animate/custom-animate.js.map +1 -1
- package/es/animate/easing-func.d.ts +1 -0
- package/es/animate/easing-func.js +10 -0
- package/es/animate/easing-func.js.map +1 -0
- package/es/animate/easing.d.ts +4 -0
- package/es/animate/easing.js +24 -1
- package/es/animate/easing.js.map +1 -1
- package/es/animate/index.d.ts +1 -0
- package/es/animate/index.js +2 -0
- package/es/animate/index.js.map +1 -1
- package/es/color-string/store.js +1 -2
- package/es/common/3d-interceptor.js +2 -1
- package/es/common/bezier-utils.d.ts +3 -0
- package/es/common/bezier-utils.js +14 -0
- package/es/common/bezier-utils.js.map +1 -1
- package/es/common/custom-path2d.d.ts +4 -0
- package/es/common/custom-path2d.js +44 -12
- package/es/common/custom-path2d.js.map +1 -1
- package/es/common/render-area.d.ts +4 -0
- package/es/common/render-area.js +77 -18
- package/es/common/render-area.js.map +1 -1
- package/es/common/render-command-list.js +2 -1
- package/es/common/render-curve.d.ts +1 -1
- package/es/common/render-curve.js.map +1 -1
- package/es/common/segment/curve/arc.d.ts +4 -1
- package/es/common/segment/curve/arc.js +10 -1
- package/es/common/segment/curve/arc.js.map +1 -1
- package/es/common/segment/curve/base.d.ts +4 -1
- package/es/common/segment/curve/base.js.map +1 -1
- package/es/common/segment/curve/cubic-bezier.d.ts +5 -1
- package/es/common/segment/curve/cubic-bezier.js +22 -1
- package/es/common/segment/curve/cubic-bezier.js.map +1 -1
- package/es/common/segment/curve/curve-context.js +6 -3
- package/es/common/segment/curve/curve-context.js.map +1 -1
- package/es/common/segment/curve/ellipse.d.ts +4 -1
- package/es/common/segment/curve/ellipse.js +9 -0
- package/es/common/segment/curve/ellipse.js.map +1 -1
- package/es/common/segment/curve/line.d.ts +4 -1
- package/es/common/segment/curve/line.js +18 -0
- package/es/common/segment/curve/line.js.map +1 -1
- package/es/common/segment/curve/move.d.ts +4 -1
- package/es/common/segment/curve/move.js +9 -0
- package/es/common/segment/curve/move.js.map +1 -1
- package/es/common/segment/curve/path.d.ts +2 -1
- package/es/common/segment/curve/path.js +5 -2
- package/es/common/segment/curve/path.js.map +1 -1
- package/es/common/segment/curve/quadratic-bezier.d.ts +6 -2
- package/es/common/segment/curve/quadratic-bezier.js +28 -5
- package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/es/common/segment/step.js +1 -1
- package/es/common/segment/step.js.map +1 -1
- package/es/common/shape/rect.d.ts +1 -1
- package/es/common/shape/rect.js +30 -25
- package/es/common/shape/rect.js.map +1 -1
- package/es/common/store.js +1 -1
- package/es/core/contributions/env/base-contribution.d.ts +2 -0
- package/es/core/contributions/env/base-contribution.js +6 -0
- package/es/core/contributions/env/base-contribution.js.map +1 -1
- package/es/core/global.d.ts +2 -3
- package/es/core/global.js +7 -8
- package/es/core/global.js.map +1 -1
- package/es/graphic/builtin-symbol/rect.d.ts +2 -1
- package/es/graphic/builtin-symbol/rect.js +28 -0
- package/es/graphic/builtin-symbol/rect.js.map +1 -1
- package/es/graphic/builtin-symbol/utils.d.ts +2 -1
- package/es/graphic/builtin-symbol/utils.js +5 -0
- package/es/graphic/builtin-symbol/utils.js.map +1 -1
- package/es/graphic/config.js +20 -5
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/graphic.d.ts +1 -1
- package/es/graphic/graphic.js +20 -6
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/line.js +2 -2
- package/es/graphic/line.js.map +1 -1
- package/es/graphic/richtext/line.js +1 -1
- package/es/graphic/richtext/line.js.map +1 -1
- package/es/graphic/richtext/paragraph.d.ts +1 -1
- package/es/graphic/richtext/paragraph.js +37 -7
- package/es/graphic/richtext/paragraph.js.map +1 -1
- package/es/graphic/richtext/utils.d.ts +4 -0
- package/es/graphic/richtext/utils.js +15 -2
- package/es/graphic/richtext/utils.js.map +1 -1
- package/es/graphic/richtext/wrapper.d.ts +1 -0
- package/es/graphic/richtext/wrapper.js +1 -1
- package/es/graphic/richtext/wrapper.js.map +1 -1
- package/es/graphic/richtext.d.ts +7 -2
- package/es/graphic/richtext.js +37 -5
- package/es/graphic/richtext.js.map +1 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +4 -0
- package/es/index.js.map +1 -1
- package/es/interface/animate.d.ts +5 -39
- package/es/interface/animate.js.map +1 -1
- package/es/interface/color.js.map +1 -1
- package/es/interface/context.d.ts +1 -0
- package/es/interface/context.js.map +1 -1
- package/es/interface/global.d.ts +4 -1
- package/es/interface/global.js.map +1 -1
- package/es/interface/graphic/group.d.ts +1 -0
- package/es/interface/graphic/group.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/path.d.ts +1 -0
- package/es/interface/graphic/path.js.map +1 -1
- package/es/interface/graphic/rect.d.ts +1 -0
- package/es/interface/graphic/rect.js.map +1 -1
- package/es/interface/graphic/richText.d.ts +12 -0
- package/es/interface/graphic/richText.js.map +1 -1
- package/es/interface/graphic/symbol.d.ts +2 -0
- package/es/interface/graphic/symbol.js.map +1 -1
- package/es/interface/graphic.d.ts +12 -3
- package/es/interface/graphic.js.map +1 -1
- package/es/interface/path.d.ts +5 -0
- package/es/interface/path.js.map +1 -1
- package/es/interface/picker.d.ts +13 -0
- package/es/interface/picker.js.map +1 -1
- package/es/picker/constants.d.ts +2 -0
- package/es/picker/constants.js +4 -0
- package/es/picker/constants.js.map +1 -1
- package/es/picker/pick-interceptor.d.ts +7 -2
- package/es/picker/pick-interceptor.js +19 -1
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/picker/pick-modules.js +5 -3
- package/es/picker/pick-modules.js.map +1 -1
- package/es/picker/picker-service.d.ts +4 -2
- package/es/picker/picker-service.js +13 -13
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/edit-module.d.ts +17 -6
- package/es/plugins/builtin-plugin/edit-module.js +123 -40
- package/es/plugins/builtin-plugin/edit-module.js.map +1 -1
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin.d.ts +88 -31
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js +538 -225
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
- package/es/render/contributions/render/arc3d-render.js.map +1 -1
- package/es/render/contributions/render/area-render.d.ts +1 -1
- package/es/render/contributions/render/area-render.js +36 -16
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/base-render.d.ts +1 -0
- package/es/render/contributions/render/base-render.js +21 -2
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.d.ts +7 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js +16 -8
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/group-contribution-render.js +8 -3
- package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +2 -2
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.js +4 -4
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +26 -0
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.js +5 -3
- package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.js +1 -1
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/group-render.js +2 -2
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/image-render.js +3 -2
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/line-render.js +31 -9
- package/es/render/contributions/render/line-render.js.map +1 -1
- package/es/render/contributions/render/path-render.js.map +1 -1
- package/es/render/contributions/render/polygon-render.js.map +1 -1
- package/es/render/contributions/render/rect-render.js +2 -2
- package/es/render/contributions/render/rect-render.js.map +1 -1
- package/es/render/contributions/render/richtext-render.js +1 -1
- package/es/render/contributions/render/richtext-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.js +16 -14
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/utils.d.ts +1 -2
- package/es/render/contributions/render/utils.js +0 -18
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/resource-loader/loader.js +1 -1
- package/es/resource-loader/loader.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"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","file":"quadratic-bezier.js","sourcesContent":["import type { IDirection, IPath2D, IQuadraticBezierCurve } from '../../../interface';\nimport { quadLength, quadPointAt } from '../../bezier-utils';\nimport { CurveTypeEnum, Direction } from '../../enums';\nimport { Curve } from './base';\nimport { abs, atan2, max, min, type IPoint, type IPointLike } from '@visactor/vutils';\nimport { divideQuad } from './cubic-bezier';\n\nexport class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {\n type: number = CurveTypeEnum.QuadraticBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n }\n\n protected _validPoint(): boolean {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y + this.p2.x + this.p2.y);\n }\n\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return quadPointAt(this.p0, this.p1, this.p2, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n protected calcLength(): number {\n if (this._validPoint()) {\n return quadLength(this.p0, this.p1, this.p2, 0);\n }\n // 默认长度不好给\n return 60;\n }\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p2.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p2.y);\n }\n return 0;\n }\n\n getAngleAt(t: number): number {\n const minT = max(t - 0.01, 0);\n const maxT = min(t + 0.01, 1);\n const minP = this.getPointAt(minT);\n const maxP = this.getPointAt(maxT);\n return atan2(maxP.y - minP.y, maxP.x - minP.x);\n }\n\n draw(path: IPath2D, x: number, y: number, sx: number, sy: number, percent: number) {\n path.moveTo(this.p0.x * sx + x, this.p0.y * sy + y);\n if (percent >= 1) {\n path.quadraticCurveTo(this.p1.x * sx + x, this.p1.y * sy + y, this.p2.x * sx + x, this.p2.y * sy + y);\n } else if (percent > 0) {\n const [curve1] = divideQuad(this, percent);\n path.quadraticCurveTo(curve1.p1.x * sx + x, curve1.p1.y * sy + y, curve1.p2.x * sx + x, curve1.p2.y * sy + y);\n }\n }\n\n getYAt(x: number): number {\n throw new Error('QuadraticBezierCurve暂不支持getYAt');\n }\n includeX(x: number): boolean {\n throw new Error('QuadraticBezierCurve暂不支持includeX');\n }\n}\n"]}
|
|
@@ -38,7 +38,7 @@ export class Step {
|
|
|
38
38
|
if (this._t <= 0) this.context.lineTo(this._x, y, !1 !== this._lastDefined && !1 !== p.defined, this.lastPoint),
|
|
39
39
|
this.context.lineTo(x, y, !1 !== this._lastDefined && !1 !== p.defined, p); else {
|
|
40
40
|
const x1 = this._x * (1 - this._t) + x * this._t;
|
|
41
|
-
|
|
41
|
+
this.context.lineTo(x1, this._y, !1 !== this._lastDefined && !1 !== p.defined, this.lastPoint),
|
|
42
42
|
this.context.lineTo(x1, y, !1 !== this._lastDefined && !1 !== p.defined, p);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/segment/step.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/common/segment/step.ts"],"names":[],"mappings":"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","file":"step.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { SegContext } from '../seg-context';\nimport { genCurveSegments } from './common';\nimport { Direction } from '../enums';\nimport type { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/step.js\nexport class Step implements ICurvedSegment {\n declare context: ISegPath2D;\n declare _t: number;\n private _lastDefined?: boolean;\n\n protected startPoint?: IPointLike;\n protected lastPoint?: IPointLike;\n\n constructor(context: ISegPath2D, t: number = 0.5, startPoint?: IPointLike) {\n this.context = context;\n this._t = t;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x = this._y = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n if (0 < this._t && this._t < 1 && this._point === 2) {\n this.context.lineTo(this._x, this._y, this._lastDefined !== false, this.lastPoint);\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n if (this._line >= 0) {\n (this._t = 1 - this._t), (this._line = 1 - this._line);\n }\n }\n point(p: IPointLike): void {\n const x = p.x;\n const y = p.y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this.context.lineTo(this._x, y, this._lastDefined !== false && p.defined !== false, this.lastPoint);\n this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p);\n } else {\n const x1 = this._x * (1 - this._t) + x * this._t;\n this.context.lineTo(x1, this._y, this._lastDefined !== false && p.defined !== false, this.lastPoint);\n this.context.lineTo(x1, y, this._lastDefined !== false && p.defined !== false, p);\n }\n break;\n }\n }\n this._lastDefined = p.defined;\n (this._x = x), (this._y = y);\n this.lastPoint = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport function genStepSegments(points: IPointLike[], t: number, params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n const segContext = new SegContext(\n 'step',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const step = new Step(segContext, t, startPoint);\n\n genStepTypeSegments(step, points);\n\n return segContext;\n}\n\nexport function genStepTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 1);\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { IContext2d, ICustomPath2D } from '../../interface';
|
|
2
2
|
type IEdgeCb = (x1: number, y1: number, x2: number, y2: number) => void;
|
|
3
|
-
export declare function createRectPath(path: ICustomPath2D | IContext2d, x: number, y: number, width: number, height: number, rectCornerRadius: number | number[], edgeCb?: IEdgeCb[]): void | ICustomPath2D | IContext2d;
|
|
3
|
+
export declare function createRectPath(path: ICustomPath2D | IContext2d, x: number, y: number, width: number, height: number, rectCornerRadius: number | number[], roundCorner?: boolean, edgeCb?: IEdgeCb[]): void | ICustomPath2D | IContext2d;
|
|
4
4
|
export {};
|
package/es/common/shape/rect.js
CHANGED
|
@@ -2,10 +2,10 @@ import { isNumber, arrayEqual, pi, abs } from "@visactor/vutils";
|
|
|
2
2
|
|
|
3
3
|
const halfPi = pi / 2;
|
|
4
4
|
|
|
5
|
-
export function createRectPath(path, x, y, width, height, rectCornerRadius, edgeCb) {
|
|
5
|
+
export function createRectPath(path, x, y, width, height, rectCornerRadius, roundCorner = !0, edgeCb) {
|
|
6
6
|
let cornerRadius;
|
|
7
|
-
if (
|
|
8
|
-
isNumber(rectCornerRadius, !0)) cornerRadius = [ rectCornerRadius = abs(rectCornerRadius), rectCornerRadius, rectCornerRadius, rectCornerRadius ]; else if (Array.isArray(rectCornerRadius)) {
|
|
7
|
+
if (Array.isArray(roundCorner) && (edgeCb = roundCorner, roundCorner = !0), width < 0 && (x += width,
|
|
8
|
+
width = -width), height < 0 && (y += height, height = -height), isNumber(rectCornerRadius, !0)) cornerRadius = [ rectCornerRadius = abs(rectCornerRadius), rectCornerRadius, rectCornerRadius, rectCornerRadius ]; else if (Array.isArray(rectCornerRadius)) {
|
|
9
9
|
const cornerRadiusArr = rectCornerRadius;
|
|
10
10
|
let cr0, cr1;
|
|
11
11
|
switch (cornerRadiusArr.length) {
|
|
@@ -29,28 +29,33 @@ export function createRectPath(path, x, y, width, height, rectCornerRadius, edge
|
|
|
29
29
|
} else cornerRadius = [ 0, 0, 0, 0 ];
|
|
30
30
|
if (width < 0 || cornerRadius[0] + cornerRadius[1] + cornerRadius[2] + cornerRadius[3] < 1e-12) return path.rect(x, y, width, height);
|
|
31
31
|
const [leftTop, rightTop, rightBottom, leftBottom] = [ [ x, y ], [ x + width, y ], [ x + width, y + height ], [ x, y + height ] ], maxCornerRadius = Math.min(width / 2, height / 2), _cornerRadius = [ Math.min(maxCornerRadius, cornerRadius[0]), Math.min(maxCornerRadius, cornerRadius[1]), Math.min(maxCornerRadius, cornerRadius[2]), Math.min(maxCornerRadius, cornerRadius[3]) ], leftTopPoint1 = [ leftTop[0] + _cornerRadius[0], leftTop[1] ], leftTopPoint2 = [ leftTop[0], leftTop[1] + _cornerRadius[0] ], rightTopPoint1 = [ rightTop[0] - _cornerRadius[1], rightTop[1] ], rightTopPoint2 = [ rightTop[0], rightTop[1] + _cornerRadius[1] ], rightBottomPoint1 = [ rightBottom[0] - _cornerRadius[2], rightBottom[1] ], rightBottomPoint2 = [ rightBottom[0], rightBottom[1] - _cornerRadius[2] ], leftBottomPoint1 = [ leftBottom[0] + _cornerRadius[3], leftBottom[1] ], leftBottomPoint2 = [ leftBottom[0], leftBottom[1] - _cornerRadius[3] ];
|
|
32
|
-
if (path.moveTo(leftTopPoint1[0], leftTopPoint1[1]),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
32
|
+
if (path.moveTo(leftTopPoint1[0], leftTopPoint1[1]), roundCorner) {
|
|
33
|
+
if (edgeCb && edgeCb[0] ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1]) : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]),
|
|
34
|
+
!arrayEqual(rightTopPoint1, rightTopPoint2)) {
|
|
35
|
+
edgeCb && edgeCb[0] && path.moveTo(rightTopPoint1[0], rightTopPoint1[1]);
|
|
36
|
+
const centerX = rightTopPoint1[0], centerY = rightTopPoint1[1] + _cornerRadius[1];
|
|
37
|
+
path.arc(centerX, centerY, _cornerRadius[1], -halfPi, 0, !1);
|
|
38
|
+
}
|
|
39
|
+
if (edgeCb && edgeCb[1] ? edgeCb[1](rightTopPoint2[0], rightTopPoint2[1], rightBottomPoint2[0], rightBottomPoint2[1]) : path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]),
|
|
40
|
+
!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {
|
|
41
|
+
const centerX = rightBottomPoint2[0] - _cornerRadius[2], centerY = rightBottomPoint2[1];
|
|
42
|
+
edgeCb && edgeCb[1] && path.moveTo(rightBottomPoint2[0], rightBottomPoint2[1]),
|
|
43
|
+
path.arc(centerX, centerY, _cornerRadius[2], 0, halfPi, !1);
|
|
44
|
+
}
|
|
45
|
+
if (edgeCb && edgeCb[2] ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1]) : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]),
|
|
46
|
+
!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {
|
|
47
|
+
const centerX = leftBottomPoint1[0], centerY = leftBottomPoint1[1] - _cornerRadius[3];
|
|
48
|
+
edgeCb && edgeCb[2] && path.moveTo(leftBottomPoint1[0], leftBottomPoint1[1]), path.arc(centerX, centerY, _cornerRadius[3], halfPi, pi, !1);
|
|
49
|
+
}
|
|
50
|
+
if (edgeCb && edgeCb[3] ? edgeCb[3](leftBottomPoint2[0], leftBottomPoint2[1], leftTopPoint2[0], leftTopPoint2[1]) : path.lineTo(leftTopPoint2[0], leftTopPoint2[1]),
|
|
51
|
+
!arrayEqual(leftTopPoint1, leftTopPoint2)) {
|
|
52
|
+
const centerX = leftTopPoint1[0], centerY = leftTopPoint1[1] + _cornerRadius[0];
|
|
53
|
+
edgeCb && edgeCb[3] && path.moveTo(leftTopPoint2[0], leftTopPoint2[1]), path.arc(centerX, centerY, _cornerRadius[0], pi, pi + halfPi, !1);
|
|
54
|
+
}
|
|
55
|
+
} else edgeCb && edgeCb[0] ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1]) : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]),
|
|
56
|
+
edgeCb && edgeCb[1] ? edgeCb[1](rightTopPoint1[0], rightTopPoint1[1], rightBottomPoint1[0], rightBottomPoint1[1]) : path.lineTo(rightBottomPoint1[0], rightBottomPoint1[1]),
|
|
57
|
+
edgeCb && edgeCb[2] ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1]) : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]),
|
|
58
|
+
edgeCb && edgeCb[2] ? edgeCb[2](leftBottomPoint1[0], leftBottomPoint1[1], leftTopPoint1[0], leftTopPoint1[1]) : path.lineTo(leftTopPoint1[0], leftTopPoint1[1]);
|
|
54
59
|
return !edgeCb && path.closePath(), path;
|
|
55
60
|
}
|
|
56
61
|
//# sourceMappingURL=rect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/shape/rect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGjE,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AAGtB,MAAM,UAAU,cAAc,CAC5B,IAAgC,EAChC,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,gBAAmC,EACnC,MAAkB;IAElB,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,CAAC,IAAI,KAAK,CAAC;QACX,KAAK,GAAG,CAAC,KAAK,CAAC;KAChB;IACD,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,CAAC,IAAI,MAAM,CAAC;QACZ,MAAM,GAAG,CAAC,MAAM,CAAC;KAClB;IAED,IAAI,YAAkB,CAAC;IACvB,IAAI,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE;QACpC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACzC,YAAY,GAAG;YACL,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;SACzB,CAAC;KACH;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAC1C,MAAM,eAAe,GAAa,gBAA4B,CAAC;QAC/D,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC;QACR,QAAQ,eAAe,CAAC,MAAM,EAAE;YAC9B,KAAK,CAAC;gBACJ,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,CAAC;gBACJ,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,CAAC,CAAC;YACP,KAAK,CAAC;gBACJ,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpC,MAAM;YACR;gBACE,YAAY,GAAG,eAAmD,CAAC;gBACnE,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM;SACT;KACF;SAAM;QACL,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7B;IAGD,IAAI,KAAK,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE;QAC9F,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KACvC;IAED,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,GAA6B;QAC7E,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACd,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;KAChB,CAAC;IASF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,aAAa,GAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;KAC3C,CAAC;IACF,MAAM,aAAa,GAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,cAAc,GAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,iBAAiB,GAAS,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,iBAAiB,GAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAGhD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;QAE/C,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,CAAC,MAAM,EACP,CAAC,EAGD,KAAK,CACN,CAAC;KAEH;IAGD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE;QAErD,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,CAAC,EACD,MAAM,EAGN,KAAK,CACN,CAAC;KAEH;IAED,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE;QAEnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,MAAM,EACN,EAAE,EAGF,KAAK,CACN,CAAC;KAEH;IAED,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE;QAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CACN,OAAO,EACP,OAAO,EACP,aAAa,CAAC,CAAC,CAAC,EAChB,EAAE,EACF,EAAE,GAAG,MAAM,EAGX,KAAK,CACN,CAAC;KAEH;IACD,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC","file":"rect.js","sourcesContent":["import type { vec2, vec4 } from '@visactor/vutils';\nimport { isNumber, arrayEqual, pi, abs } from '@visactor/vutils';\nimport type { IContext2d, ICustomPath2D } from '../../interface';\n\nconst halfPi = pi / 2;\n\ntype IEdgeCb = (x1: number, y1: number, x2: number, y2: number) => void;\nexport function createRectPath(\n path: ICustomPath2D | IContext2d,\n x: number,\n y: number,\n width: number,\n height: number,\n rectCornerRadius: number | number[],\n edgeCb?: IEdgeCb[]\n) {\n if (width < 0) {\n x += width;\n width = -width;\n }\n if (height < 0) {\n y += height;\n height = -height;\n }\n // 匹配cornerRadius\n let cornerRadius: vec4;\n if (isNumber(rectCornerRadius, true)) {\n rectCornerRadius = abs(rectCornerRadius);\n cornerRadius = [\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius\n ];\n } else if (Array.isArray(rectCornerRadius)) {\n const cornerRadiusArr: number[] = rectCornerRadius as number[];\n let cr0;\n let cr1;\n let cr2;\n let cr3;\n switch (cornerRadiusArr.length) {\n case 0:\n cornerRadius = [0, 0, 0, 0];\n break;\n case 1:\n cr0 = abs(cornerRadiusArr[0]);\n cornerRadius = [cr0, cr0, cr0, cr0];\n break;\n case 2:\n case 3:\n cr0 = abs(cornerRadiusArr[0]);\n cr1 = abs(cornerRadiusArr[1]);\n cornerRadius = [cr0, cr1, cr0, cr1];\n break;\n default:\n cornerRadius = cornerRadiusArr as [number, number, number, number];\n cornerRadius[0] = abs(cornerRadius[0]);\n cornerRadius[1] = abs(cornerRadius[1]);\n cornerRadius[2] = abs(cornerRadius[2]);\n cornerRadius[3] = abs(cornerRadius[3]);\n break;\n }\n } else {\n cornerRadius = [0, 0, 0, 0];\n }\n\n // 当宽度小于0 或者 cornerRadius 极小时,不绘制 cornerRadius\n if (width < 0 || cornerRadius[0] + cornerRadius[1] + cornerRadius[2] + cornerRadius[3] < 1e-12) {\n return path.rect(x, y, width, height);\n }\n\n const [leftTop, rightTop, rightBottom, leftBottom]: [vec2, vec2, vec2, vec2] = [\n [x, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height]\n ];\n //\n // *(leftTopPoint1)******************(rightTopPoint1)\n // (leftTopPoint2) (rightTopPoint2)\n // * *\n // * *\n // (leftBottomPoint2) (rightBottomPoint2)\n // *(leftBottomPoint1)***************(rightBottomPoint1)\n //\n const maxCornerRadius = Math.min(width / 2, height / 2);\n const _cornerRadius: vec4 = [\n Math.min(maxCornerRadius, cornerRadius[0]),\n Math.min(maxCornerRadius, cornerRadius[1]),\n Math.min(maxCornerRadius, cornerRadius[2]),\n Math.min(maxCornerRadius, cornerRadius[3])\n ];\n const leftTopPoint1: vec2 = [leftTop[0] + _cornerRadius[0], leftTop[1]];\n const leftTopPoint2: vec2 = [leftTop[0], leftTop[1] + _cornerRadius[0]];\n const rightTopPoint1: vec2 = [rightTop[0] - _cornerRadius[1], rightTop[1]];\n const rightTopPoint2: vec2 = [rightTop[0], rightTop[1] + _cornerRadius[1]];\n const rightBottomPoint1: vec2 = [rightBottom[0] - _cornerRadius[2], rightBottom[1]];\n const rightBottomPoint2: vec2 = [rightBottom[0], rightBottom[1] - _cornerRadius[2]];\n const leftBottomPoint1: vec2 = [leftBottom[0] + _cornerRadius[3], leftBottom[1]];\n const leftBottomPoint2: vec2 = [leftBottom[0], leftBottom[1] - _cornerRadius[3]];\n\n path.moveTo(leftTopPoint1[0], leftTopPoint1[1]);\n\n // 上边\n edgeCb && edgeCb[0]\n ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1])\n : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n if (!arrayEqual(rightTopPoint1, rightTopPoint2)) {\n // arc from rightTopPoint1 to rightTopPoint2\n edgeCb && edgeCb[0] && path.moveTo(rightTopPoint1[0], rightTopPoint1[1]);\n const centerX = rightTopPoint1[0];\n const centerY = rightTopPoint1[1] + _cornerRadius[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[1],\n -halfPi,\n 0,\n // Math.atan2(rightTopPoint1[1] - centerY, rightTopPoint1[0] - centerX),\n // Math.atan2(rightTopPoint2[1] - centerY, rightTopPoint2[0] - centerX),\n false\n );\n // path.arcTo(rightTop[0], rightTop[1], rightTopPoint2[0], rightTopPoint2[1], _cornerRadius[1]);\n }\n\n // 右边\n edgeCb && edgeCb[1]\n ? edgeCb[1](rightTopPoint2[0], rightTopPoint2[1], rightBottomPoint2[0], rightBottomPoint2[1])\n : path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n if (!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {\n // arc from rightBottomPoint2 to rightTopPoint1\n const centerX = rightBottomPoint2[0] - _cornerRadius[2];\n const centerY = rightBottomPoint2[1];\n edgeCb && edgeCb[1] && path.moveTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[2],\n 0,\n halfPi,\n // Math.atan2(rightBottomPoint2[1] - centerY, rightBottomPoint2[0] - centerX),\n // Math.atan2(rightBottomPoint1[1] - centerY, rightBottomPoint1[0] - centerX),\n false\n );\n // path.arcTo(rightBottom[0], rightBottom[1], rightBottomPoint1[0], rightBottomPoint1[1], _cornerRadius[2]);\n }\n\n edgeCb && edgeCb[2]\n ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1])\n : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n if (!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {\n // arc from leftBottomPoint1 to leftBottomPoint2\n const centerX = leftBottomPoint1[0];\n const centerY = leftBottomPoint1[1] - _cornerRadius[3];\n edgeCb && edgeCb[2] && path.moveTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[3],\n halfPi,\n pi,\n // Math.atan2(leftBottomPoint1[1] - centerY, leftBottomPoint1[0] - centerX),\n // Math.atan2(leftBottomPoint2[1] - centerY, leftBottomPoint2[0] - centerX),\n false\n );\n // path.arcTo(leftBottom[0], leftBottom[1], leftBottomPoint2[0], leftBottomPoint2[1], _cornerRadius[3]);\n }\n\n edgeCb && edgeCb[3]\n ? edgeCb[3](leftBottomPoint2[0], leftBottomPoint2[1], leftTopPoint2[0], leftTopPoint2[1])\n : path.lineTo(leftTopPoint2[0], leftTopPoint2[1]);\n if (!arrayEqual(leftTopPoint1, leftTopPoint2)) {\n const centerX = leftTopPoint1[0];\n const centerY = leftTopPoint1[1] + _cornerRadius[0];\n edgeCb && edgeCb[3] && path.moveTo(leftTopPoint2[0], leftTopPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[0],\n pi,\n pi + halfPi,\n // Math.atan2(leftTopPoint2[1] - centerY, leftTopPoint2[0] - centerX),\n // Math.atan2(leftTopPoint1[1] - centerY, leftTopPoint1[0] - centerX) + Math.PI * 2,\n false\n );\n // path.arcTo(leftTop[0], leftTop[1], leftTopPoint1[0], leftTopPoint1[1], _cornerRadius[0]);\n }\n !edgeCb && path.closePath();\n return path;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/shape/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import type { vec2, vec4 } from '@visactor/vutils';\nimport { isNumber, arrayEqual, pi, abs } from '@visactor/vutils';\nimport type { IContext2d, ICustomPath2D } from '../../interface';\n\nconst halfPi = pi / 2;\n\ntype IEdgeCb = (x1: number, y1: number, x2: number, y2: number) => void;\nexport function createRectPath(\n path: ICustomPath2D | IContext2d,\n x: number,\n y: number,\n width: number,\n height: number,\n rectCornerRadius: number | number[],\n // @since 0.22.0\n roundCorner: boolean = true,\n edgeCb?: IEdgeCb[]\n) {\n // TODO 避免breakChange,旧版本的roundCorner位置是edgeCb\n if (Array.isArray(roundCorner)) {\n edgeCb = roundCorner;\n roundCorner = true;\n }\n if (width < 0) {\n x += width;\n width = -width;\n }\n if (height < 0) {\n y += height;\n height = -height;\n }\n // 匹配cornerRadius\n let cornerRadius: vec4;\n if (isNumber(rectCornerRadius, true)) {\n rectCornerRadius = abs(rectCornerRadius);\n cornerRadius = [\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius,\n <number>rectCornerRadius\n ];\n } else if (Array.isArray(rectCornerRadius)) {\n const cornerRadiusArr: number[] = rectCornerRadius as number[];\n let cr0;\n let cr1;\n let cr2;\n let cr3;\n switch (cornerRadiusArr.length) {\n case 0:\n cornerRadius = [0, 0, 0, 0];\n break;\n case 1:\n cr0 = abs(cornerRadiusArr[0]);\n cornerRadius = [cr0, cr0, cr0, cr0];\n break;\n case 2:\n case 3:\n cr0 = abs(cornerRadiusArr[0]);\n cr1 = abs(cornerRadiusArr[1]);\n cornerRadius = [cr0, cr1, cr0, cr1];\n break;\n default:\n cornerRadius = cornerRadiusArr as [number, number, number, number];\n cornerRadius[0] = abs(cornerRadius[0]);\n cornerRadius[1] = abs(cornerRadius[1]);\n cornerRadius[2] = abs(cornerRadius[2]);\n cornerRadius[3] = abs(cornerRadius[3]);\n break;\n }\n } else {\n cornerRadius = [0, 0, 0, 0];\n }\n\n // 当宽度小于0 或者 cornerRadius 极小时,不绘制 cornerRadius\n if (width < 0 || cornerRadius[0] + cornerRadius[1] + cornerRadius[2] + cornerRadius[3] < 1e-12) {\n return path.rect(x, y, width, height);\n }\n\n const [leftTop, rightTop, rightBottom, leftBottom]: [vec2, vec2, vec2, vec2] = [\n [x, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height]\n ];\n //\n // *(leftTopPoint1)******************(rightTopPoint1)\n // (leftTopPoint2) (rightTopPoint2)\n // * *\n // * *\n // (leftBottomPoint2) (rightBottomPoint2)\n // *(leftBottomPoint1)***************(rightBottomPoint1)\n //\n const maxCornerRadius = Math.min(width / 2, height / 2);\n const _cornerRadius: vec4 = [\n Math.min(maxCornerRadius, cornerRadius[0]),\n Math.min(maxCornerRadius, cornerRadius[1]),\n Math.min(maxCornerRadius, cornerRadius[2]),\n Math.min(maxCornerRadius, cornerRadius[3])\n ];\n const leftTopPoint1: vec2 = [leftTop[0] + _cornerRadius[0], leftTop[1]];\n const leftTopPoint2: vec2 = [leftTop[0], leftTop[1] + _cornerRadius[0]];\n const rightTopPoint1: vec2 = [rightTop[0] - _cornerRadius[1], rightTop[1]];\n const rightTopPoint2: vec2 = [rightTop[0], rightTop[1] + _cornerRadius[1]];\n const rightBottomPoint1: vec2 = [rightBottom[0] - _cornerRadius[2], rightBottom[1]];\n const rightBottomPoint2: vec2 = [rightBottom[0], rightBottom[1] - _cornerRadius[2]];\n const leftBottomPoint1: vec2 = [leftBottom[0] + _cornerRadius[3], leftBottom[1]];\n const leftBottomPoint2: vec2 = [leftBottom[0], leftBottom[1] - _cornerRadius[3]];\n\n path.moveTo(leftTopPoint1[0], leftTopPoint1[1]);\n\n if (!roundCorner) {\n // 上边\n edgeCb && edgeCb[0]\n ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1])\n : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n // 右边\n edgeCb && edgeCb[1]\n ? edgeCb[1](rightTopPoint1[0], rightTopPoint1[1], rightBottomPoint1[0], rightBottomPoint1[1])\n : path.lineTo(rightBottomPoint1[0], rightBottomPoint1[1]);\n // 下边\n edgeCb && edgeCb[2]\n ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1])\n : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n\n // 左边\n edgeCb && edgeCb[2]\n ? edgeCb[2](leftBottomPoint1[0], leftBottomPoint1[1], leftTopPoint1[0], leftTopPoint1[1])\n : path.lineTo(leftTopPoint1[0], leftTopPoint1[1]);\n } else {\n // 上边\n edgeCb && edgeCb[0]\n ? edgeCb[0](leftTopPoint1[0], leftTopPoint1[1], rightTopPoint1[0], rightTopPoint1[1])\n : path.lineTo(rightTopPoint1[0], rightTopPoint1[1]);\n if (!arrayEqual(rightTopPoint1, rightTopPoint2)) {\n // arc from rightTopPoint1 to rightTopPoint2\n edgeCb && edgeCb[0] && path.moveTo(rightTopPoint1[0], rightTopPoint1[1]);\n const centerX = rightTopPoint1[0];\n const centerY = rightTopPoint1[1] + _cornerRadius[1];\n path.arc(\n centerX,\n centerY,\n _cornerRadius[1],\n -halfPi,\n 0,\n // Math.atan2(rightTopPoint1[1] - centerY, rightTopPoint1[0] - centerX),\n // Math.atan2(rightTopPoint2[1] - centerY, rightTopPoint2[0] - centerX),\n false\n );\n // path.arcTo(rightTop[0], rightTop[1], rightTopPoint2[0], rightTopPoint2[1], _cornerRadius[1]);\n }\n\n // 右边\n edgeCb && edgeCb[1]\n ? edgeCb[1](rightTopPoint2[0], rightTopPoint2[1], rightBottomPoint2[0], rightBottomPoint2[1])\n : path.lineTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n if (!arrayEqual(rightBottomPoint1, rightBottomPoint2)) {\n // arc from rightBottomPoint2 to rightTopPoint1\n const centerX = rightBottomPoint2[0] - _cornerRadius[2];\n const centerY = rightBottomPoint2[1];\n edgeCb && edgeCb[1] && path.moveTo(rightBottomPoint2[0], rightBottomPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[2],\n 0,\n halfPi,\n // Math.atan2(rightBottomPoint2[1] - centerY, rightBottomPoint2[0] - centerX),\n // Math.atan2(rightBottomPoint1[1] - centerY, rightBottomPoint1[0] - centerX),\n false\n );\n // path.arcTo(rightBottom[0], rightBottom[1], rightBottomPoint1[0], rightBottomPoint1[1], _cornerRadius[2]);\n }\n\n edgeCb && edgeCb[2]\n ? edgeCb[2](rightBottomPoint1[0], rightBottomPoint1[1], leftBottomPoint1[0], leftBottomPoint1[1])\n : path.lineTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n if (!arrayEqual(leftBottomPoint1, leftBottomPoint2)) {\n // arc from leftBottomPoint1 to leftBottomPoint2\n const centerX = leftBottomPoint1[0];\n const centerY = leftBottomPoint1[1] - _cornerRadius[3];\n edgeCb && edgeCb[2] && path.moveTo(leftBottomPoint1[0], leftBottomPoint1[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[3],\n halfPi,\n pi,\n // Math.atan2(leftBottomPoint1[1] - centerY, leftBottomPoint1[0] - centerX),\n // Math.atan2(leftBottomPoint2[1] - centerY, leftBottomPoint2[0] - centerX),\n false\n );\n // path.arcTo(leftBottom[0], leftBottom[1], leftBottomPoint2[0], leftBottomPoint2[1], _cornerRadius[3]);\n }\n\n edgeCb && edgeCb[3]\n ? edgeCb[3](leftBottomPoint2[0], leftBottomPoint2[1], leftTopPoint2[0], leftTopPoint2[1])\n : path.lineTo(leftTopPoint2[0], leftTopPoint2[1]);\n if (!arrayEqual(leftTopPoint1, leftTopPoint2)) {\n const centerX = leftTopPoint1[0];\n const centerY = leftTopPoint1[1] + _cornerRadius[0];\n edgeCb && edgeCb[3] && path.moveTo(leftTopPoint2[0], leftTopPoint2[1]);\n path.arc(\n centerX,\n centerY,\n _cornerRadius[0],\n pi,\n pi + halfPi,\n // Math.atan2(leftTopPoint2[1] - centerY, leftTopPoint2[0] - centerX),\n // Math.atan2(leftTopPoint1[1] - centerY, leftTopPoint1[0] - centerX) + Math.PI * 2,\n false\n );\n // path.arcTo(leftTop[0], leftTop[1], leftTopPoint1[0], leftTopPoint1[1], _cornerRadius[0]);\n }\n }\n !edgeCb && path.closePath();\n return path;\n}\n"]}
|
package/es/common/store.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
class StageStore {}
|
|
2
|
-
//# sourceMappingURL=store.js.map
|
|
2
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -59,4 +59,6 @@ export declare abstract class BaseEnvContribution implements IEnvContribution {
|
|
|
59
59
|
loadFont(font: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): Promise<{
|
|
60
60
|
loadState: 'success' | 'fail';
|
|
61
61
|
}>;
|
|
62
|
+
isMacOS(): boolean;
|
|
63
|
+
copyToClipBoard(text: string): Promise<any>;
|
|
62
64
|
}
|
|
@@ -107,6 +107,12 @@ let BaseEnvContribution = class {
|
|
|
107
107
|
};
|
|
108
108
|
}));
|
|
109
109
|
}
|
|
110
|
+
isMacOS() {
|
|
111
|
+
return !1;
|
|
112
|
+
}
|
|
113
|
+
copyToClipBoard(text) {
|
|
114
|
+
return Promise.resolve(null);
|
|
115
|
+
}
|
|
110
116
|
};
|
|
111
117
|
|
|
112
118
|
BaseEnvContribution = __decorate([ injectable() ], BaseEnvContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/core/contributions/env/base-contribution.ts"],"names":[],"mappings":"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","file":"base-contribution.js","sourcesContent":["import { injectable } from '../../../common/inversify-lite';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n IGlobal,\n CreateDOMParamsType\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\n\n@injectable()\nexport abstract class BaseEnvContribution implements IEnvContribution {\n type: EnvType;\n\n supportsTouchEvents: boolean;\n supportsPointerEvents: boolean;\n supportsMouseEvents: boolean;\n applyStyles: boolean;\n supportEvent: boolean;\n\n configure(service: IGlobal, ...p: any) {\n if (service.env === this.type) {\n service.setActiveEnvContribution(this);\n }\n }\n\n getNativeAABBBounds(dom: any): IBoundsLike {\n return new AABBBounds();\n }\n\n removeDom(dom: HTMLElement): boolean {\n return false;\n }\n\n createDom(params: CreateDOMParamsType): any {\n return null;\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n return false;\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n return 999;\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n return 999;\n }\n\n abstract loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n\n abstract createCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n abstract createOffscreenCanvas(params: ICreateCanvasParams): ICanvasLike | any;\n\n abstract releaseCanvas(canvas: ICanvasLike | string): void;\n\n abstract getDevicePixelRatio(): number;\n\n abstract getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n abstract getCancelAnimationFrame(): (h: number) => void;\n\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n abstract addEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n abstract removeEventListener(type: unknown, listener: unknown, options?: unknown): void;\n\n abstract dispatchEvent(event: any): boolean;\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n abstract release(...params: any): void;\n\n loadJson(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }> {\n const jsonPromise = fetch(url).then(data => data.json());\n jsonPromise\n .then(json => {\n return {\n data: json,\n state: 'success'\n };\n })\n .catch(() => {\n return {\n data: null,\n state: 'fail'\n };\n });\n return jsonPromise;\n }\n\n loadArrayBuffer(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }> {\n const arrayBufferPromise = fetch(url).then(data => data.arrayBuffer());\n return arrayBufferPromise\n .then((arrayBuffer: ArrayBuffer) => {\n return {\n data: arrayBuffer,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadBlob(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }> {\n const blobPromise = fetch(url).then(data => data.blob());\n return blobPromise\n .then((blob: Blob) => {\n return {\n data: blob,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n getElementTop(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementLeft(dom: any, baseWindow?: boolean) {\n return 0;\n }\n getElementTopLeft(dom: any, baseWindow?: boolean): { top: number; left: number } {\n return { top: 0, left: 0 };\n }\n\n async loadFont(\n font: string,\n source: string | BinaryData,\n descriptors?: FontFaceDescriptors\n ): Promise<{ loadState: 'success' | 'fail' }> {\n return { loadState: 'fail' };\n }\n\n isMacOS() {\n return false;\n }\n copyToClipBoard(text: string) {\n return Promise.resolve(null);\n }\n}\n"]}
|
package/es/core/global.d.ts
CHANGED
|
@@ -6,11 +6,8 @@ export declare class DefaultGlobal implements IGlobal {
|
|
|
6
6
|
private _env;
|
|
7
7
|
private _isSafari?;
|
|
8
8
|
private _isChrome?;
|
|
9
|
-
private _isImageAnonymous?;
|
|
10
9
|
get env(): EnvType;
|
|
11
10
|
private envContribution;
|
|
12
|
-
get isImageAnonymous(): boolean;
|
|
13
|
-
set isImageAnonymous(isImageAnonymous: boolean);
|
|
14
11
|
get devicePixelRatio(): number;
|
|
15
12
|
get supportEvent(): boolean;
|
|
16
13
|
set supportEvent(support: boolean);
|
|
@@ -83,4 +80,6 @@ export declare class DefaultGlobal implements IGlobal {
|
|
|
83
80
|
top: number;
|
|
84
81
|
left: number;
|
|
85
82
|
};
|
|
83
|
+
isMacOS(): boolean;
|
|
84
|
+
copyToClipBoard(text: string): Promise<void>;
|
|
86
85
|
}
|
package/es/core/global.js
CHANGED
|
@@ -50,12 +50,6 @@ let DefaultGlobal = class {
|
|
|
50
50
|
get env() {
|
|
51
51
|
return this._env;
|
|
52
52
|
}
|
|
53
|
-
get isImageAnonymous() {
|
|
54
|
-
return this._isImageAnonymous;
|
|
55
|
-
}
|
|
56
|
-
set isImageAnonymous(isImageAnonymous) {
|
|
57
|
-
this._isImageAnonymous = isImageAnonymous;
|
|
58
|
-
}
|
|
59
53
|
get devicePixelRatio() {
|
|
60
54
|
return this._env || this.setEnv("browser"), this.envContribution.getDevicePixelRatio();
|
|
61
55
|
}
|
|
@@ -90,8 +84,7 @@ let DefaultGlobal = class {
|
|
|
90
84
|
this._env || this.setEnv("browser"), this.envContribution.applyStyles = support;
|
|
91
85
|
}
|
|
92
86
|
constructor(contributions) {
|
|
93
|
-
this.contributions = contributions, this.
|
|
94
|
-
this.hooks = {
|
|
87
|
+
this.contributions = contributions, this.id = Generator.GenAutoIncrementId(), this.hooks = {
|
|
95
88
|
onSetEnv: new SyncHook([ "lastEnv", "env", "global" ])
|
|
96
89
|
}, this.measureTextMethod = "native", this.optimizeVisible = !1;
|
|
97
90
|
}
|
|
@@ -212,6 +205,12 @@ let DefaultGlobal = class {
|
|
|
212
205
|
getElementTopLeft(dom, baseWindow = !1) {
|
|
213
206
|
return this._env || this.setEnv("browser"), this.envContribution.getElementTopLeft(dom, baseWindow);
|
|
214
207
|
}
|
|
208
|
+
isMacOS() {
|
|
209
|
+
return this._env || this.setEnv("browser"), this.envContribution.isMacOS();
|
|
210
|
+
}
|
|
211
|
+
copyToClipBoard(text) {
|
|
212
|
+
return this._env || this.setEnv("browser"), this.envContribution.copyToClipBoard(text);
|
|
213
|
+
}
|
|
215
214
|
};
|
|
216
215
|
|
|
217
216
|
DefaultGlobal = __decorate([ injectable(), __param(0, inject(ContributionProvider)), __param(0, named(EnvContribution)), __metadata("design:paramtypes", [ Object ]) ], DefaultGlobal);
|
package/es/core/global.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":"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","file":"global.js","sourcesContent":["import { inject, injectable, named } from '../common/inversify-lite';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n CreateDOMParamsType,\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\nimport type { IAABBBoundsLike } from '@visactor/vutils';\nimport { container } from '../container';\nimport { Generator } from '../common/generator';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal implements IGlobal {\n readonly id: number;\n private _env: EnvType;\n private _isSafari?: boolean;\n private _isChrome?: boolean;\n private _isImageAnonymous?: boolean = true;\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get isImageAnonymous(): boolean {\n return this._isImageAnonymous;\n }\n\n set isImageAnonymous(isImageAnonymous: boolean) {\n this._isImageAnonymous = isImageAnonymous;\n }\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n set supportEvent(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportEvent = support;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n set supportsTouchEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsTouchEvents = support;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n set supportsPointerEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsPointerEvents = support;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n set supportsMouseEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsMouseEvents = support;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n set applyStyles(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.applyStyles = support;\n }\n\n // 是否在不显示canvas的时候停止绘图操作,默认false\n optimizeVisible: boolean;\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n this.id = Generator.GenAutoIncrementId();\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n this.optimizeVisible = false;\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n async loadFont(name: string, source: string | BinaryData, descriptors?: FontFaceDescriptors) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadFont(name, source, descriptors);\n }\n\n isChrome(): boolean {\n if (this._isChrome != null) {\n return this._isChrome;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isChrome = this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n return this._isChrome;\n }\n\n isSafari(): boolean {\n if (this._isSafari != null) {\n return this._isSafari;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isSafari =\n this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n return this._isSafari;\n }\n\n getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getNativeAABBBounds(dom);\n }\n\n removeDom(dom: HTMLElement): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.removeDom(dom);\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.createDom(params);\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.updateDom(dom, params);\n }\n\n getElementTop(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTop(dom, baseWindow);\n }\n getElementLeft(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementLeft(dom, baseWindow);\n }\n getElementTopLeft(dom: any, baseWindow: boolean = false): { top: number; left: number } {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTopLeft(dom, baseWindow);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAWvE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,UAAU,GAAY,SAAS,CAAC;AAE/B,IAAM,aAAa,GAAnB,MAAM,aAAa;IAKxB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAGD,IAAI,gBAAgB;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,YAAY;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY,CAAC,OAAgB;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9C,CAAC;IAED,IAAI,mBAAmB;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;IAClD,CAAC;IAED,IAAI,mBAAmB,CAAC,OAAgB;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,eAAe,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACrD,CAAC;IAED,IAAI,qBAAqB;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC;IACpD,CAAC;IAED,IAAI,qBAAqB,CAAC,OAAgB;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,eAAe,CAAC,qBAAqB,GAAG,OAAO,CAAC;IACvD,CAAC;IAED,IAAI,mBAAmB;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;IAClD,CAAC;IAED,IAAI,mBAAmB,CAAC,OAAgB;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,eAAe,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACrD,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED,IAAI,WAAW,CAAC,OAAgB;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7C,CAAC;IAWD,YAIqB,aAAsD;QAAtD,kBAAa,GAAb,aAAa,CAAyC;QAEzE,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG;YACX,QAAQ,EAAE,IAAI,QAAQ,CAA0C,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC9F,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAES,gBAAgB,CAAC,MAAY;QACrC,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClD,IAAK,IAAY,IAAK,IAAY,CAAC,IAAI,EAAE;gBACvC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,MAAM,EAAE;YACrB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAChC;IACH,CAAC;IAKD,qBAAqB;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;IACtD,CAAC;IAKD,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;IACrD,CAAC;IASD,MAAM,CAAC,GAAY,EAAE,MAA+B;QAElD,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;YAC3D,OAAO;SACR;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACzD,CAAC;IAES,SAAS,CAAC,GAAY,EAAE,MAA+B;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACpB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,wBAAwB,CAAC,YAA8B;QACrD,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,MAA2B;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,qBAAqB,CAAC,MAA2B;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,MAAwC;QACpD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAOD,gBAAgB,CACd,IAAY,EACZ,QAA4C,EAC5C,OAA2C;QAE3C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAMD,mBAAmB,CACjB,IAAY,EACZ,QAA4C,EAC5C,OAAwC;QAExC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IACD,aAAa,CAAC,KAAU;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,CAAC;IACzD,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC;IACxD,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;YACrC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,gBAAgB,CAAC,KAAU,EAAE,UAAgB;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE;YAC1C,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,eAAe,CAAC,GAAW;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEK,QAAQ,CAAC,IAAY,EAAE,MAA2B,EAAE,WAAiC;;YACzF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACxB;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAClE,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,IAAI,CAAC,SAAS;YACZ,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvG,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,mBAAmB,CAAC,GAA+B;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,CAAC,GAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,SAAS,CAAC,MAA2B;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,GAAgB,EAAE,MAA2B;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,aAAa,CAAC,GAAQ,EAAE,aAAsB,KAAK;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IACD,cAAc,CAAC,GAAQ,EAAE,aAAsB,KAAK;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IACD,iBAAiB,CAAC,GAAQ,EAAE,aAAsB,KAAK;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,eAAe,CAAC,IAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;CACF,CAAA;AAlaY,aAAa;IADzB,UAAU,EAAE;IAmGR,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC5B,WAAA,KAAK,CAAC,eAAe,CAAC,CAAA;;GAnGd,aAAa,CAkazB;SAlaY,aAAa","file":"global.js","sourcesContent":["import { inject, injectable, named } from '../common/inversify-lite';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n CreateDOMParamsType,\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\nimport type { IAABBBoundsLike } from '@visactor/vutils';\nimport { container } from '../container';\nimport { Generator } from '../common/generator';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal implements IGlobal {\n readonly id: number;\n private _env: EnvType;\n private _isSafari?: boolean;\n private _isChrome?: boolean;\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n set supportEvent(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportEvent = support;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n set supportsTouchEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsTouchEvents = support;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n set supportsPointerEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsPointerEvents = support;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n set supportsMouseEvents(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.supportsMouseEvents = support;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n set applyStyles(support: boolean) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n this.envContribution.applyStyles = support;\n }\n\n // 是否在不显示canvas的时候停止绘图操作,默认false\n optimizeVisible: boolean;\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n this.id = Generator.GenAutoIncrementId();\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n this.optimizeVisible = false;\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n async loadFont(name: string, source: string | BinaryData, descriptors?: FontFaceDescriptors) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadFont(name, source, descriptors);\n }\n\n isChrome(): boolean {\n if (this._isChrome != null) {\n return this._isChrome;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isChrome = this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n return this._isChrome;\n }\n\n isSafari(): boolean {\n if (this._isSafari != null) {\n return this._isSafari;\n }\n if (!this._env) {\n this.setEnv('browser');\n }\n this._isSafari =\n this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n return this._isSafari;\n }\n\n getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getNativeAABBBounds(dom);\n }\n\n removeDom(dom: HTMLElement): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.removeDom(dom);\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.createDom(params);\n }\n\n updateDom(dom: HTMLElement, params: CreateDOMParamsType): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.updateDom(dom, params);\n }\n\n getElementTop(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTop(dom, baseWindow);\n }\n getElementLeft(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementLeft(dom, baseWindow);\n }\n getElementTopLeft(dom: any, baseWindow: boolean = false): { top: number; left: number } {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTopLeft(dom, baseWindow);\n }\n\n isMacOS(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.isMacOS();\n }\n\n copyToClipBoard(text: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.copyToClipBoard(text);\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IContext2d, SymbolType, ISymbolClass } from '../../interface';
|
|
1
|
+
import type { IContext2d, SymbolType, ISymbolClass, ICustomPath2D, IPath2D } from '../../interface';
|
|
2
2
|
import { BaseSymbol } from './base';
|
|
3
3
|
export declare function rectSizeArray(ctx: IContext2d, size: [number, number], x: number, y: number): boolean;
|
|
4
4
|
export declare function rectSize(ctx: IContext2d, size: number, x: number, y: number): boolean;
|
|
@@ -6,6 +6,7 @@ export declare class RectSymbol extends BaseSymbol implements ISymbolClass {
|
|
|
6
6
|
type: SymbolType;
|
|
7
7
|
pathStr: string;
|
|
8
8
|
draw(ctx: IContext2d, size: number | [number, number], x: number, y: number): boolean;
|
|
9
|
+
drawWithClipRange(ctx: IPath2D, size: number | [number, number], x: number, y: number, clipRange: number, z?: number, cb?: (p: ICustomPath2D, a: any) => void): boolean;
|
|
9
10
|
drawOffset(ctx: IContext2d, size: number | [number, number], x: number, y: number, offset: number): boolean;
|
|
10
11
|
}
|
|
11
12
|
declare const _default: RectSymbol;
|
|
@@ -18,6 +18,34 @@ export class RectSymbol extends BaseSymbol {
|
|
|
18
18
|
draw(ctx, size, x, y) {
|
|
19
19
|
return isNumber(size) ? rectSize(ctx, size, x, y) : rectSizeArray(ctx, size, x, y);
|
|
20
20
|
}
|
|
21
|
+
drawWithClipRange(ctx, size, x, y, clipRange, z, cb) {
|
|
22
|
+
isNumber(size) && (size = [ size, size / 2 ]);
|
|
23
|
+
const drawLength = 2 * (size[0] + size[1]) * clipRange, points = [ {
|
|
24
|
+
x: x + size[0] / 2,
|
|
25
|
+
y: y - size[1] / 2
|
|
26
|
+
}, {
|
|
27
|
+
x: x + size[0] / 2,
|
|
28
|
+
y: y + size[1] / 2
|
|
29
|
+
}, {
|
|
30
|
+
x: x - size[0] / 2,
|
|
31
|
+
y: y + size[1] / 2
|
|
32
|
+
}, {
|
|
33
|
+
x: x - size[0] / 2,
|
|
34
|
+
y: y - size[1] / 2
|
|
35
|
+
} ];
|
|
36
|
+
let currLength = 0, lastP = points[3];
|
|
37
|
+
ctx.moveTo(lastP.x, lastP.y);
|
|
38
|
+
for (let i = 0; i < points.length; i++) {
|
|
39
|
+
const p = points[i], len = Math.sqrt((p.x - lastP.x) * (p.x - lastP.x) + (p.y - lastP.y) * (p.y - lastP.y));
|
|
40
|
+
if (currLength + len > drawLength) {
|
|
41
|
+
const dx = (p.x - lastP.x) * (drawLength - currLength) / len, dy = (p.y - lastP.y) * (drawLength - currLength) / len;
|
|
42
|
+
ctx.lineTo(lastP.x + dx, lastP.y + dy);
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
ctx.lineTo(p.x, p.y), lastP = p, currLength += len;
|
|
46
|
+
}
|
|
47
|
+
return !1;
|
|
48
|
+
}
|
|
21
49
|
drawOffset(ctx, size, x, y, offset) {
|
|
22
50
|
return isNumber(size) ? rectSize(ctx, size + 2 * offset, x, y) : rectSizeArray(ctx, [ size[0] + 2 * offset, size[1] + 2 * offset ], x, y);
|
|
23
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graphic/builtin-symbol/rect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAiCpC,MAAM,UAAU,aAAa,CAAC,GAAe,EAAE,IAAsB,EAAE,CAAS,EAAE,CAAS;IACzF,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAe,EAAE,IAAY,EAAE,CAAS,EAAE,CAAS;IAC1E,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,MAAM,OAAO,UAAW,SAAQ,UAAU;IAA1C;;QACE,SAAI,GAAe,MAAM,CAAC;QAC1B,YAAO,GAAW,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/graphic/builtin-symbol/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import type { IBounds } from '@visactor/vutils';\nimport { isNumber } from '@visactor/vutils';\nimport type { IContext2d, SymbolType, ISymbolClass, ICustomPath2D, IPath2D } from '../../interface';\nimport { BaseSymbol } from './base';\n\n/**\n * 部分源码参考 https://github.com/vega/vega/blob/main/packages/vega-scenegraph/src/path/symbols.js\n * Copyright (c) 2015-2023, University of Washington Interactive Data Lab\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n 3. Neither the name of the copyright holder nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE\n FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nexport function rectSizeArray(ctx: IContext2d, size: [number, number], x: number, y: number) {\n ctx.rect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n return false;\n}\n\nexport function rectSize(ctx: IContext2d, size: number, x: number, y: number) {\n const w = size;\n const h = size / 2;\n ctx.rect(x - w / 2, y - h / 2, w, h);\n return false;\n}\n\n// 以中心为锚点,size为circle外接正方形的面积\nexport class RectSymbol extends BaseSymbol implements ISymbolClass {\n type: SymbolType = 'rect';\n pathStr: string = 'M -0.5,0.25 L 0.5,0.25 L 0.5,-0.25,L -0.5,-0.25 Z';\n\n draw(ctx: IContext2d, size: number | [number, number], x: number, y: number) {\n if (isNumber(size)) {\n return rectSize(ctx, size, x, y);\n }\n return rectSizeArray(ctx, size, x, y);\n // const rectSize: [number, number] = ? [size, size] : size;\n // return rect(ctx, rectSize, x, y);\n }\n\n drawWithClipRange(\n ctx: IPath2D,\n size: number | [number, number],\n x: number,\n y: number,\n clipRange: number,\n z?: number,\n cb?: (p: ICustomPath2D, a: any) => void\n ) {\n if (isNumber(size)) {\n size = [size, size / 2];\n }\n const totalLength = (size[0] + size[1]) * 2;\n const drawLength = totalLength * clipRange;\n const points = [\n { x: x + size[0] / 2, y: y - size[1] / 2 },\n { x: x + size[0] / 2, y: y + size[1] / 2 },\n { x: x - size[0] / 2, y: y + size[1] / 2 },\n { x: x - size[0] / 2, y: y - size[1] / 2 }\n ];\n let currLength = 0;\n let lastP = points[3];\n ctx.moveTo(lastP.x, lastP.y);\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n const len = Math.sqrt((p.x - lastP.x) * (p.x - lastP.x) + (p.y - lastP.y) * (p.y - lastP.y));\n if (currLength + len > drawLength) {\n const dx = ((p.x - lastP.x) * (drawLength - currLength)) / len;\n const dy = ((p.y - lastP.y) * (drawLength - currLength)) / len;\n ctx.lineTo(lastP.x + dx, lastP.y + dy);\n break;\n } else {\n ctx.lineTo(p.x, p.y);\n }\n lastP = p;\n currLength += len;\n }\n return false;\n }\n\n drawOffset(ctx: IContext2d, size: number | [number, number], x: number, y: number, offset: number) {\n if (isNumber(size)) {\n return rectSize(ctx, size + 2 * offset, x, y);\n }\n return rectSizeArray(ctx, [size[0] + 2 * offset, size[1] + 2 * offset], x, y);\n }\n}\n\nexport default new RectSymbol();\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IBounds } from '@visactor/vutils';
|
|
2
|
-
import type { IContext2d, ICustomPath2D, IGraphicAttribute, ISymbolClass } from '../../interface';
|
|
2
|
+
import type { IContext2d, ICustomPath2D, IGraphicAttribute, IPath2D, ISymbolClass } from '../../interface';
|
|
3
3
|
export declare class CustomSymbolClass implements ISymbolClass {
|
|
4
4
|
type: string;
|
|
5
5
|
path: ICustomPath2D;
|
|
@@ -16,5 +16,6 @@ export declare class CustomSymbolClass implements ISymbolClass {
|
|
|
16
16
|
drawOffset(ctx: IContext2d, size: number, x: number, y: number, offset: number, z?: number, cb?: (path: ICustomPath2D, attribute?: Record<string, any>) => void): boolean;
|
|
17
17
|
draw(ctx: IContext2d, size: number, x: number, y: number, z?: number, cb?: (path: ICustomPath2D, attribute?: Record<string, any>) => void): boolean;
|
|
18
18
|
protected parseSize(size: number | [number, number]): number;
|
|
19
|
+
drawWithClipRange(ctx: IPath2D, size: number, x: number, y: number, clipRange: number, z?: number, cb?: (p: ICustomPath2D, a: any) => void): boolean;
|
|
19
20
|
bounds(size: number, bounds: IBounds): void;
|
|
20
21
|
}
|
|
@@ -22,6 +22,11 @@ export class CustomSymbolClass {
|
|
|
22
22
|
parseSize(size) {
|
|
23
23
|
return isNumber(size) ? size : Math.min(size[0], size[1]);
|
|
24
24
|
}
|
|
25
|
+
drawWithClipRange(ctx, size, x, y, clipRange, z, cb) {
|
|
26
|
+
return this.isSvg ? !!this.svgCache && (this.svgCache.forEach((item => {
|
|
27
|
+
item.path.drawWithClipRange(ctx, size, x, y, clipRange), cb && cb(item.path, item.attribute);
|
|
28
|
+
})), !1) : (this.path.drawWithClipRange(ctx, size, x, y, clipRange), !1);
|
|
29
|
+
}
|
|
25
30
|
bounds(size, bounds) {
|
|
26
31
|
if (size = this.parseSize(size), this.isSvg) {
|
|
27
32
|
if (!this.svgCache) return;
|