@visactor/vrender-core 0.19.4-alpha.4 → 0.19.4
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/allocator/allocator-modules.js +0 -2
- package/cjs/allocator/bounds-allocate.js +1 -1
- package/cjs/allocator/bounds-allocate.js.map +1 -1
- package/cjs/allocator/canvas-allocate.js +11 -9
- package/cjs/allocator/canvas-allocate.js.map +1 -1
- package/cjs/allocator/graphic-allocate.js +5 -9
- package/cjs/allocator/graphic-allocate.js.map +1 -1
- package/cjs/allocator/matrix-allocate.js +2 -6
- package/cjs/allocator/matrix-allocate.js.map +1 -1
- package/cjs/animate/Ticker/default-ticker.js +25 -14
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/animate.js +8 -7
- package/cjs/animate/animate.js.map +1 -1
- package/cjs/animate/config.js +1 -2
- package/cjs/animate/custom-animate.js +54 -51
- package/cjs/animate/custom-animate.js.map +1 -1
- package/cjs/animate/easing.js +19 -8
- package/cjs/animate/easing.js.map +1 -1
- package/cjs/animate/morphing.js +20 -23
- package/cjs/animate/morphing.js.map +1 -1
- package/cjs/application.js +7 -1
- package/cjs/application.js.map +1 -1
- package/cjs/canvas/conical-gradient.js +12 -5
- package/cjs/canvas/conical-gradient.js.map +1 -1
- package/cjs/canvas/contributions/base-canvas.js +19 -7
- package/cjs/canvas/contributions/base-canvas.js.map +1 -1
- package/cjs/color-string/interpolate.js +5 -3
- package/cjs/color-string/interpolate.js.map +1 -1
- package/cjs/color-string/store.js +3 -1
- package/cjs/color-string/store.js.map +1 -1
- package/cjs/common/bounds-context.js +1 -0
- package/cjs/common/bounds-context.js.map +1 -1
- package/cjs/common/canvas-utils.js +3 -6
- package/cjs/common/canvas-utils.js.map +1 -1
- package/cjs/common/contribution-provider.js +3 -0
- package/cjs/common/contribution-provider.js.map +1 -1
- package/cjs/common/custom-path2d.js +7 -1
- package/cjs/common/custom-path2d.js.map +1 -1
- package/cjs/common/generator.js +2 -1
- package/cjs/common/generator.js.map +1 -1
- package/cjs/common/inversify/binding.js +12 -0
- package/cjs/common/inversify/binding.js.map +1 -1
- package/cjs/common/inversify/container.js +4 -0
- package/cjs/common/inversify/container.js.map +1 -1
- package/cjs/common/inversify/cotainer-module.js +2 -0
- package/cjs/common/inversify/cotainer-module.js.map +1 -1
- package/cjs/common/inversify/meta-data.js +2 -0
- package/cjs/common/inversify/meta-data.js.map +1 -1
- package/cjs/common/inversify/syntax/binding_in_syntax.js +1 -0
- package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -1
- package/cjs/common/inversify/syntax/binding_to_syntax.js +1 -0
- package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
- package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
- package/cjs/common/inversify-lite/bindings/binding.js +14 -0
- package/cjs/common/inversify-lite/bindings/binding.js.map +1 -1
- package/cjs/common/inversify-lite/container/container.js +22 -46
- package/cjs/common/inversify-lite/container/container.js.map +1 -1
- package/cjs/common/inversify-lite/container/container_module.js +4 -0
- package/cjs/common/inversify-lite/container/container_module.js.map +1 -1
- package/cjs/common/inversify-lite/container/lookup.js +1 -0
- package/cjs/common/inversify-lite/container/lookup.js.map +1 -1
- package/cjs/common/inversify-lite/planning/context.js +4 -0
- package/cjs/common/inversify-lite/planning/context.js.map +1 -1
- package/cjs/common/inversify-lite/planning/metadata.js +2 -0
- package/cjs/common/inversify-lite/planning/metadata.js.map +1 -1
- package/cjs/common/inversify-lite/planning/plan.js +2 -0
- package/cjs/common/inversify-lite/planning/plan.js.map +1 -1
- package/cjs/common/inversify-lite/planning/queryable_string.js +1 -0
- package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
- package/cjs/common/inversify-lite/planning/request.js +8 -0
- package/cjs/common/inversify-lite/planning/request.js.map +1 -1
- package/cjs/common/inversify-lite/planning/target.js +7 -0
- package/cjs/common/inversify-lite/planning/target.js.map +1 -1
- package/cjs/common/inversify-lite/resolution/instantiation.js +16 -42
- package/cjs/common/inversify-lite/resolution/instantiation.js.map +1 -1
- package/cjs/common/inversify-lite/scope/scope.js +3 -29
- package/cjs/common/inversify-lite/scope/scope.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
- package/cjs/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
- package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
- package/cjs/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
- package/cjs/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
- package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
- package/cjs/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
- package/cjs/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
- package/cjs/common/polygon.js +1 -2
- package/cjs/common/polygon.js.map +1 -1
- package/cjs/common/render-area.js +2 -3
- package/cjs/common/render-area.js.map +1 -1
- package/cjs/common/render-curve.js +4 -8
- package/cjs/common/render-curve.js.map +1 -1
- package/cjs/common/seg-context.js +12 -3
- package/cjs/common/seg-context.js.map +1 -1
- package/cjs/common/segment/basis.js +13 -0
- package/cjs/common/segment/basis.js.map +1 -1
- package/cjs/common/segment/common.js +2 -2
- package/cjs/common/segment/common.js.map +1 -1
- package/cjs/common/segment/curve/arc.js +2 -2
- package/cjs/common/segment/curve/arc.js.map +1 -1
- package/cjs/common/segment/curve/base.js +4 -0
- package/cjs/common/segment/curve/base.js.map +1 -1
- package/cjs/common/segment/curve/cubic-bezier.js +2 -2
- package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
- package/cjs/common/segment/curve/curve-context.js +4 -0
- package/cjs/common/segment/curve/curve-context.js.map +1 -1
- package/cjs/common/segment/curve/ellipse.js +3 -3
- package/cjs/common/segment/curve/ellipse.js.map +1 -1
- package/cjs/common/segment/curve/line.js +2 -1
- package/cjs/common/segment/curve/line.js.map +1 -1
- package/cjs/common/segment/curve/move.js +2 -1
- package/cjs/common/segment/curve/move.js.map +1 -1
- package/cjs/common/segment/curve/path.js +2 -0
- package/cjs/common/segment/curve/path.js.map +1 -1
- package/cjs/common/segment/curve/quadratic-bezier.js +2 -2
- package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/cjs/common/segment/linear-closed.js.map +1 -1
- package/cjs/common/segment/linear.js +10 -0
- package/cjs/common/segment/linear.js.map +1 -1
- package/cjs/common/segment/monotone.js +13 -0
- package/cjs/common/segment/monotone.js.map +1 -1
- package/cjs/common/segment/step.js +13 -2
- package/cjs/common/segment/step.js.map +1 -1
- package/cjs/common/sort.js +3 -34
- package/cjs/common/sort.js.map +1 -1
- package/cjs/common/split-path.js +4 -11
- package/cjs/common/split-path.js.map +1 -1
- package/cjs/common/utils.d.ts +1 -1
- package/cjs/common/utils.js +10 -6
- package/cjs/common/utils.js.map +1 -1
- package/cjs/common/xml/parser.js +3 -2
- package/cjs/common/xml/parser.js.map +1 -1
- package/cjs/core/camera.js +11 -4
- package/cjs/core/camera.js.map +1 -1
- package/cjs/core/contributions/env/base-contribution.js +6 -0
- package/cjs/core/contributions/env/base-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
- package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/empty-contribution.js +8 -8
- package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
- package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/cjs/core/contributions/textMeasure/AtextMeasure.js +11 -8
- package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
- package/cjs/core/contributions/textMeasure/layout.js +3 -0
- package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
- package/cjs/core/contributions/window/base-contribution.js +2 -0
- package/cjs/core/contributions/window/base-contribution.js.map +1 -1
- package/cjs/core/global.js +8 -0
- package/cjs/core/global.js.map +1 -1
- package/cjs/core/graphic-utils.js +16 -5
- package/cjs/core/graphic-utils.js.map +1 -1
- package/cjs/core/layer-service.js +7 -7
- package/cjs/core/layer-service.js.map +1 -1
- package/cjs/core/layer.js +7 -9
- package/cjs/core/layer.js.map +1 -1
- package/cjs/core/stage.js +79 -35
- package/cjs/core/stage.js.map +1 -1
- package/cjs/core/window.js +16 -13
- package/cjs/core/window.js.map +1 -1
- package/cjs/event/event-manager.js +152 -143
- package/cjs/event/event-manager.js.map +1 -1
- package/cjs/event/event-system.js +60 -43
- package/cjs/event/event-system.js.map +1 -1
- package/cjs/event/event-target.js +1 -3
- package/cjs/event/event-target.js.map +1 -1
- package/cjs/event/federated-event/base-event.js +43 -15
- package/cjs/event/federated-event/base-event.js.map +1 -1
- package/cjs/event/federated-event/mouse-event.js +27 -18
- package/cjs/event/federated-event/mouse-event.js.map +1 -1
- package/cjs/event/federated-event/pointer-event.js +13 -8
- package/cjs/event/federated-event/pointer-event.js.map +1 -1
- package/cjs/event/federated-event/wheel-event.js +14 -10
- package/cjs/event/federated-event/wheel-event.js.map +1 -1
- package/cjs/graphic/arc.js +10 -5
- package/cjs/graphic/arc.js.map +1 -1
- package/cjs/graphic/arc3d.js +7 -4
- package/cjs/graphic/arc3d.js.map +1 -1
- package/cjs/graphic/area.js +14 -9
- package/cjs/graphic/area.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow.js +2 -3
- package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -3
- package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -3
- package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -3
- package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
- package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -3
- package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
- package/cjs/graphic/builtin-symbol/circle.js +2 -3
- package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
- package/cjs/graphic/builtin-symbol/close.js +2 -3
- package/cjs/graphic/builtin-symbol/close.js.map +1 -1
- package/cjs/graphic/builtin-symbol/cross.js +2 -3
- package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
- package/cjs/graphic/builtin-symbol/diamond.js +2 -3
- package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
- package/cjs/graphic/builtin-symbol/line-h.js +2 -3
- package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
- package/cjs/graphic/builtin-symbol/line-v.js +2 -3
- package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
- package/cjs/graphic/builtin-symbol/rect.js +2 -3
- package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
- package/cjs/graphic/builtin-symbol/square.js +2 -3
- package/cjs/graphic/builtin-symbol/square.js.map +1 -1
- package/cjs/graphic/builtin-symbol/star.js +2 -3
- package/cjs/graphic/builtin-symbol/star.js.map +1 -1
- package/cjs/graphic/builtin-symbol/stroke.js +2 -3
- package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
- package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -3
- package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-down.js +2 -3
- package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-left.js +2 -3
- package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-right.js +2 -3
- package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle-up.js +2 -3
- package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
- package/cjs/graphic/builtin-symbol/triangle.js +1 -3
- package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
- package/cjs/graphic/builtin-symbol/utils.js +6 -1
- package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
- package/cjs/graphic/builtin-symbol/wedge.js +2 -3
- package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
- package/cjs/graphic/builtin-symbol/wye.js +2 -3
- package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
- package/cjs/graphic/circle.js +8 -6
- package/cjs/graphic/circle.js.map +1 -1
- package/cjs/graphic/config.js +59 -32
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/glyph.js +10 -9
- package/cjs/graphic/glyph.js.map +1 -1
- package/cjs/graphic/graphic-service/graphic-service.js +12 -8
- package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
- package/cjs/graphic/graphic.d.ts +1 -0
- package/cjs/graphic/graphic.js +32 -42
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/group.js +9 -5
- package/cjs/graphic/group.js.map +1 -1
- package/cjs/graphic/image.js +18 -16
- package/cjs/graphic/image.js.map +1 -1
- package/cjs/graphic/line.js +11 -6
- package/cjs/graphic/line.js.map +1 -1
- package/cjs/graphic/node-tree.js +25 -44
- package/cjs/graphic/node-tree.js.map +1 -1
- package/cjs/graphic/path.js +12 -6
- package/cjs/graphic/path.js.map +1 -1
- package/cjs/graphic/polygon.js +7 -4
- package/cjs/graphic/polygon.js.map +1 -1
- package/cjs/graphic/pyramid3d.js +4 -3
- package/cjs/graphic/pyramid3d.js.map +1 -1
- package/cjs/graphic/rect.js +7 -3
- package/cjs/graphic/rect.js.map +1 -1
- package/cjs/graphic/rect3d.js +5 -4
- package/cjs/graphic/rect3d.js.map +1 -1
- package/cjs/graphic/richtext/frame.js +19 -0
- package/cjs/graphic/richtext/frame.js.map +1 -1
- package/cjs/graphic/richtext/icon.js +14 -6
- package/cjs/graphic/richtext/icon.js.map +1 -1
- package/cjs/graphic/richtext/line.js +14 -2
- package/cjs/graphic/richtext/line.js.map +1 -1
- package/cjs/graphic/richtext/paragraph.js +22 -0
- package/cjs/graphic/richtext/paragraph.js.map +1 -1
- package/cjs/graphic/richtext/utils.js +1 -2
- package/cjs/graphic/richtext/utils.js.map +1 -1
- package/cjs/graphic/richtext/wrapper.js +12 -0
- package/cjs/graphic/richtext/wrapper.js.map +1 -1
- package/cjs/graphic/richtext.js +38 -45
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/graphic/shadow-root.js +2 -1
- package/cjs/graphic/shadow-root.js.map +1 -1
- package/cjs/graphic/symbol.js +12 -5
- package/cjs/graphic/symbol.js.map +1 -1
- package/cjs/graphic/text.js +45 -45
- package/cjs/graphic/text.js.map +1 -1
- package/cjs/graphic/theme.js +4 -0
- package/cjs/graphic/theme.js.map +1 -1
- package/cjs/graphic/tools.js +16 -44
- package/cjs/graphic/tools.js.map +1 -1
- package/cjs/graphic/wrap-text.js +7 -7
- package/cjs/graphic/wrap-text.js.map +1 -1
- package/cjs/interface/global.d.ts +2 -1
- package/cjs/interface/global.js.map +1 -1
- package/cjs/interface/graphic.d.ts +1 -0
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/picker/global-picker-service.js +1 -0
- package/cjs/picker/global-picker-service.js.map +1 -1
- package/cjs/picker/pick-interceptor.js +5 -15
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/picker/picker-service.js +5 -5
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
- package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/auto-render-plugin.js +5 -4
- package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
- package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
- package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +28 -19
- package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
- package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +6 -7
- package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
- package/cjs/plugins/plugin-service.js +1 -0
- package/cjs/plugins/plugin-service.js.map +1 -1
- package/cjs/render/contributions/render/arc-render.js +6 -4
- package/cjs/render/contributions/render/arc-render.js.map +1 -1
- package/cjs/render/contributions/render/arc3d-render.js +5 -7
- package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
- package/cjs/render/contributions/render/area-render.js +21 -23
- package/cjs/render/contributions/render/area-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.js +5 -0
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/circle-render.js +6 -4
- package/cjs/render/contributions/render/circle-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js +3 -4
- package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js +6 -9
- package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +10 -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 +4 -4
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js +3 -4
- package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.js +1 -3
- package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +1 -3
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +11 -14
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +3 -4
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/text-contribution-render.js +6 -8
- package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/draw-contribution.js +12 -14
- package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/draw-interceptor.js +11 -21
- package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
- package/cjs/render/contributions/render/glyph-render.js +2 -3
- package/cjs/render/contributions/render/glyph-render.js.map +1 -1
- package/cjs/render/contributions/render/graphic-render.js +4 -1
- package/cjs/render/contributions/render/graphic-render.js.map +1 -1
- package/cjs/render/contributions/render/group-render.js +7 -3
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +4 -2
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-area-render.js +1 -3
- package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
- package/cjs/render/contributions/render/incremental-draw-contribution.js +80 -109
- package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/cjs/render/contributions/render/incremental-line-render.js +1 -3
- package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
- package/cjs/render/contributions/render/line-render.js +12 -16
- package/cjs/render/contributions/render/line-render.js.map +1 -1
- package/cjs/render/contributions/render/path-render.js +8 -7
- package/cjs/render/contributions/render/path-render.js.map +1 -1
- package/cjs/render/contributions/render/polygon-render.js +6 -4
- package/cjs/render/contributions/render/polygon-render.js.map +1 -1
- package/cjs/render/contributions/render/pyramid3d-render.js +3 -5
- package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
- package/cjs/render/contributions/render/rect-render.js +8 -7
- package/cjs/render/contributions/render/rect-render.js.map +1 -1
- package/cjs/render/contributions/render/rect3d-render.js +5 -7
- package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
- package/cjs/render/contributions/render/richtext-render.js +4 -3
- package/cjs/render/contributions/render/richtext-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.js +11 -14
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/text-render.js +8 -8
- package/cjs/render/contributions/render/text-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.js +1 -1
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/render/render-service.js +11 -2
- package/cjs/render/render-service.js.map +1 -1
- package/cjs/resource-loader/loader.js +13 -16
- package/cjs/resource-loader/loader.js.map +1 -1
- package/cjs/tapable/Hook.js +3 -0
- package/cjs/tapable/Hook.js.map +1 -1
- package/dist/index.es.js +28908 -0
- package/es/allocator/allocator-modules.js +0 -2
- package/es/allocator/bounds-allocate.js +1 -1
- package/es/allocator/bounds-allocate.js.map +1 -1
- package/es/allocator/canvas-allocate.js +11 -9
- package/es/allocator/canvas-allocate.js.map +1 -1
- package/es/allocator/graphic-allocate.js +5 -9
- package/es/allocator/graphic-allocate.js.map +1 -1
- package/es/allocator/matrix-allocate.js +2 -6
- package/es/allocator/matrix-allocate.js.map +1 -1
- package/es/animate/Ticker/default-ticker.js +25 -14
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/animate.js +7 -8
- package/es/animate/animate.js.map +1 -1
- package/es/animate/config.js +1 -2
- package/es/animate/custom-animate.js +52 -50
- package/es/animate/custom-animate.js.map +1 -1
- package/es/animate/easing.js +18 -8
- package/es/animate/easing.js.map +1 -1
- package/es/animate/morphing.js +20 -23
- package/es/animate/morphing.js.map +1 -1
- package/es/application.js +7 -1
- package/es/application.js.map +1 -1
- package/es/canvas/conical-gradient.js +12 -6
- package/es/canvas/conical-gradient.js.map +1 -1
- package/es/canvas/contributions/base-canvas.js +19 -7
- package/es/canvas/contributions/base-canvas.js.map +1 -1
- package/es/color-string/interpolate.js +5 -3
- package/es/color-string/interpolate.js.map +1 -1
- package/es/color-string/store.js +2 -2
- package/es/color-string/store.js.map +1 -1
- package/es/common/bounds-context.js +1 -0
- package/es/common/bounds-context.js.map +1 -1
- package/es/common/canvas-utils.js +3 -6
- package/es/common/canvas-utils.js.map +1 -1
- package/es/common/contribution-provider.js +3 -0
- package/es/common/contribution-provider.js.map +1 -1
- package/es/common/custom-path2d.js +7 -1
- package/es/common/custom-path2d.js.map +1 -1
- package/es/common/generator.js +1 -2
- package/es/common/generator.js.map +1 -1
- package/es/common/inversify/binding.js +12 -0
- package/es/common/inversify/binding.js.map +1 -1
- package/es/common/inversify/container.js +4 -0
- package/es/common/inversify/container.js.map +1 -1
- package/es/common/inversify/cotainer-module.js +2 -0
- package/es/common/inversify/cotainer-module.js.map +1 -1
- package/es/common/inversify/meta-data.js +2 -0
- package/es/common/inversify/meta-data.js.map +1 -1
- package/es/common/inversify/syntax/binding_in_syntax.js +1 -0
- package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -1
- package/es/common/inversify/syntax/binding_to_syntax.js +1 -0
- package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -1
- package/es/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
- package/es/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
- package/es/common/inversify-lite/bindings/binding.js +14 -0
- package/es/common/inversify-lite/bindings/binding.js.map +1 -1
- package/es/common/inversify-lite/container/container.js +22 -48
- package/es/common/inversify-lite/container/container.js.map +1 -1
- package/es/common/inversify-lite/container/container_module.js +4 -0
- package/es/common/inversify-lite/container/container_module.js.map +1 -1
- package/es/common/inversify-lite/container/lookup.js +1 -0
- package/es/common/inversify-lite/container/lookup.js.map +1 -1
- package/es/common/inversify-lite/planning/context.js +4 -0
- package/es/common/inversify-lite/planning/context.js.map +1 -1
- package/es/common/inversify-lite/planning/metadata.js +2 -0
- package/es/common/inversify-lite/planning/metadata.js.map +1 -1
- package/es/common/inversify-lite/planning/plan.js +2 -0
- package/es/common/inversify-lite/planning/plan.js.map +1 -1
- package/es/common/inversify-lite/planning/queryable_string.js +1 -0
- package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
- package/es/common/inversify-lite/planning/request.js +8 -0
- package/es/common/inversify-lite/planning/request.js.map +1 -1
- package/es/common/inversify-lite/planning/target.js +7 -0
- package/es/common/inversify-lite/planning/target.js.map +1 -1
- package/es/common/inversify-lite/resolution/instantiation.js +16 -44
- package/es/common/inversify-lite/resolution/instantiation.js.map +1 -1
- package/es/common/inversify-lite/scope/scope.js +3 -29
- package/es/common/inversify-lite/scope/scope.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
- package/es/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
- package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
- package/es/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
- package/es/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
- package/es/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
- package/es/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
- package/es/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
- package/es/common/polygon.js +1 -2
- package/es/common/polygon.js.map +1 -1
- package/es/common/render-area.js +2 -3
- package/es/common/render-area.js.map +1 -1
- package/es/common/render-curve.js +4 -8
- package/es/common/render-curve.js.map +1 -1
- package/es/common/seg-context.js +12 -3
- package/es/common/seg-context.js.map +1 -1
- package/es/common/segment/basis.js +13 -0
- package/es/common/segment/basis.js.map +1 -1
- package/es/common/segment/common.js +1 -1
- package/es/common/segment/common.js.map +1 -1
- package/es/common/segment/curve/arc.js +2 -1
- package/es/common/segment/curve/arc.js.map +1 -1
- package/es/common/segment/curve/base.js +4 -0
- package/es/common/segment/curve/base.js.map +1 -1
- package/es/common/segment/curve/cubic-bezier.js +2 -2
- package/es/common/segment/curve/cubic-bezier.js.map +1 -1
- package/es/common/segment/curve/curve-context.js +4 -0
- package/es/common/segment/curve/curve-context.js.map +1 -1
- package/es/common/segment/curve/ellipse.js +3 -3
- package/es/common/segment/curve/ellipse.js.map +1 -1
- package/es/common/segment/curve/line.js +2 -1
- package/es/common/segment/curve/line.js.map +1 -1
- package/es/common/segment/curve/move.js +2 -1
- package/es/common/segment/curve/move.js.map +1 -1
- package/es/common/segment/curve/path.js +2 -0
- package/es/common/segment/curve/path.js.map +1 -1
- package/es/common/segment/curve/quadratic-bezier.js +2 -2
- package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/es/common/segment/linear-closed.js.map +1 -1
- package/es/common/segment/linear.js +10 -0
- package/es/common/segment/linear.js.map +1 -1
- package/es/common/segment/monotone.js +13 -0
- package/es/common/segment/monotone.js.map +1 -1
- package/es/common/segment/step.js +12 -1
- package/es/common/segment/step.js.map +1 -1
- package/es/common/sort.js +3 -34
- package/es/common/sort.js.map +1 -1
- package/es/common/split-path.js +4 -11
- package/es/common/split-path.js.map +1 -1
- package/es/common/utils.d.ts +1 -1
- package/es/common/utils.js +9 -7
- package/es/common/utils.js.map +1 -1
- package/es/common/xml/parser.js +2 -2
- package/es/common/xml/parser.js.map +1 -1
- package/es/core/camera.js +11 -4
- package/es/core/camera.js.map +1 -1
- package/es/core/contributions/env/base-contribution.js +6 -0
- package/es/core/contributions/env/base-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
- package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/empty-contribution.js +8 -8
- package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
- package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
- package/es/core/contributions/textMeasure/AtextMeasure.js +11 -8
- package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
- package/es/core/contributions/textMeasure/layout.js +3 -0
- package/es/core/contributions/textMeasure/layout.js.map +1 -1
- package/es/core/contributions/window/base-contribution.js +2 -0
- package/es/core/contributions/window/base-contribution.js.map +1 -1
- package/es/core/global.js +8 -0
- package/es/core/global.js.map +1 -1
- package/es/core/graphic-utils.js +16 -5
- package/es/core/graphic-utils.js.map +1 -1
- package/es/core/layer-service.js +7 -7
- package/es/core/layer-service.js.map +1 -1
- package/es/core/layer.js +7 -9
- package/es/core/layer.js.map +1 -1
- package/es/core/stage.js +79 -35
- package/es/core/stage.js.map +1 -1
- package/es/core/window.js +16 -14
- package/es/core/window.js.map +1 -1
- package/es/event/event-manager.js +152 -143
- package/es/event/event-manager.js.map +1 -1
- package/es/event/event-system.js +60 -43
- package/es/event/event-system.js.map +1 -1
- package/es/event/event-target.js +1 -3
- package/es/event/event-target.js.map +1 -1
- package/es/event/federated-event/base-event.js +43 -15
- package/es/event/federated-event/base-event.js.map +1 -1
- package/es/event/federated-event/mouse-event.js +27 -18
- package/es/event/federated-event/mouse-event.js.map +1 -1
- package/es/event/federated-event/pointer-event.js +13 -8
- package/es/event/federated-event/pointer-event.js.map +1 -1
- package/es/event/federated-event/wheel-event.js +13 -11
- package/es/event/federated-event/wheel-event.js.map +1 -1
- package/es/graphic/arc.js +9 -6
- package/es/graphic/arc.js.map +1 -1
- package/es/graphic/arc3d.js +6 -5
- package/es/graphic/arc3d.js.map +1 -1
- package/es/graphic/area.js +13 -10
- package/es/graphic/area.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow.js +2 -3
- package/es/graphic/builtin-symbol/arrow.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-down.js +2 -3
- package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-left.js +2 -3
- package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-right.js +2 -3
- package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
- package/es/graphic/builtin-symbol/arrow2-up.js +2 -3
- package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
- package/es/graphic/builtin-symbol/circle.js +2 -3
- package/es/graphic/builtin-symbol/circle.js.map +1 -1
- package/es/graphic/builtin-symbol/close.js +2 -3
- package/es/graphic/builtin-symbol/close.js.map +1 -1
- package/es/graphic/builtin-symbol/cross.js +2 -3
- package/es/graphic/builtin-symbol/cross.js.map +1 -1
- package/es/graphic/builtin-symbol/diamond.js +2 -3
- package/es/graphic/builtin-symbol/diamond.js.map +1 -1
- package/es/graphic/builtin-symbol/line-h.js +2 -3
- package/es/graphic/builtin-symbol/line-h.js.map +1 -1
- package/es/graphic/builtin-symbol/line-v.js +2 -3
- package/es/graphic/builtin-symbol/line-v.js.map +1 -1
- package/es/graphic/builtin-symbol/rect.js +2 -3
- package/es/graphic/builtin-symbol/rect.js.map +1 -1
- package/es/graphic/builtin-symbol/square.js +2 -3
- package/es/graphic/builtin-symbol/square.js.map +1 -1
- package/es/graphic/builtin-symbol/star.js +2 -3
- package/es/graphic/builtin-symbol/star.js.map +1 -1
- package/es/graphic/builtin-symbol/stroke.js +2 -3
- package/es/graphic/builtin-symbol/stroke.js.map +1 -1
- package/es/graphic/builtin-symbol/thin-triangle.js +2 -3
- package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-down.js +2 -3
- package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-left.js +2 -3
- package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-right.js +2 -3
- package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle-up.js +2 -3
- package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
- package/es/graphic/builtin-symbol/triangle.js +1 -3
- package/es/graphic/builtin-symbol/triangle.js.map +1 -1
- package/es/graphic/builtin-symbol/utils.js +6 -2
- package/es/graphic/builtin-symbol/utils.js.map +1 -1
- package/es/graphic/builtin-symbol/wedge.js +2 -3
- package/es/graphic/builtin-symbol/wedge.js.map +1 -1
- package/es/graphic/builtin-symbol/wye.js +2 -3
- package/es/graphic/builtin-symbol/wye.js.map +1 -1
- package/es/graphic/circle.js +7 -6
- package/es/graphic/circle.js.map +1 -1
- package/es/graphic/config.js +73 -44
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/glyph.js +9 -9
- package/es/graphic/glyph.js.map +1 -1
- package/es/graphic/graphic-service/graphic-service.js +12 -8
- package/es/graphic/graphic-service/graphic-service.js.map +1 -1
- package/es/graphic/graphic.d.ts +1 -0
- package/es/graphic/graphic.js +32 -42
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/group.js +8 -5
- package/es/graphic/group.js.map +1 -1
- package/es/graphic/image.js +17 -16
- package/es/graphic/image.js.map +1 -1
- package/es/graphic/line.js +10 -7
- package/es/graphic/line.js.map +1 -1
- package/es/graphic/node-tree.js +25 -44
- package/es/graphic/node-tree.js.map +1 -1
- package/es/graphic/path.js +11 -7
- package/es/graphic/path.js.map +1 -1
- package/es/graphic/polygon.js +6 -4
- package/es/graphic/polygon.js.map +1 -1
- package/es/graphic/pyramid3d.js +3 -3
- package/es/graphic/pyramid3d.js.map +1 -1
- package/es/graphic/rect.js +6 -4
- package/es/graphic/rect.js.map +1 -1
- package/es/graphic/rect3d.js +4 -4
- package/es/graphic/rect3d.js.map +1 -1
- package/es/graphic/richtext/frame.js +19 -0
- package/es/graphic/richtext/frame.js.map +1 -1
- package/es/graphic/richtext/icon.js +14 -6
- package/es/graphic/richtext/icon.js.map +1 -1
- package/es/graphic/richtext/line.js +14 -2
- package/es/graphic/richtext/line.js.map +1 -1
- package/es/graphic/richtext/paragraph.js +22 -0
- package/es/graphic/richtext/paragraph.js.map +1 -1
- package/es/graphic/richtext/utils.js +1 -2
- package/es/graphic/richtext/utils.js.map +1 -1
- package/es/graphic/richtext/wrapper.js +12 -0
- package/es/graphic/richtext/wrapper.js.map +1 -1
- package/es/graphic/richtext.js +37 -46
- package/es/graphic/richtext.js.map +1 -1
- package/es/graphic/shadow-root.js +2 -1
- package/es/graphic/shadow-root.js.map +1 -1
- package/es/graphic/symbol.js +11 -6
- package/es/graphic/symbol.js.map +1 -1
- package/es/graphic/text.js +39 -40
- package/es/graphic/text.js.map +1 -1
- package/es/graphic/theme.js +4 -0
- package/es/graphic/theme.js.map +1 -1
- package/es/graphic/tools.js +16 -44
- package/es/graphic/tools.js.map +1 -1
- package/es/graphic/wrap-text.js +6 -6
- package/es/graphic/wrap-text.js.map +1 -1
- package/es/interface/global.d.ts +2 -1
- package/es/interface/global.js.map +1 -1
- package/es/interface/graphic.d.ts +1 -0
- package/es/interface/graphic.js.map +1 -1
- package/es/picker/global-picker-service.js +1 -0
- package/es/picker/global-picker-service.js.map +1 -1
- package/es/picker/pick-interceptor.js +5 -15
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/picker/picker-service.js +5 -5
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
- package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/auto-render-plugin.js +5 -4
- package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
- package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
- package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/html-attribute-plugin.js +28 -17
- package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
- package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
- package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -6
- package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
- package/es/plugins/plugin-service.js +1 -0
- package/es/plugins/plugin-service.js.map +1 -1
- package/es/render/contributions/render/arc-render.js +6 -4
- package/es/render/contributions/render/arc-render.js.map +1 -1
- package/es/render/contributions/render/arc3d-render.js +5 -7
- package/es/render/contributions/render/arc3d-render.js.map +1 -1
- package/es/render/contributions/render/area-render.js +21 -23
- package/es/render/contributions/render/area-render.js.map +1 -1
- package/es/render/contributions/render/base-render.js +5 -0
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/circle-render.js +6 -4
- package/es/render/contributions/render/circle-render.js.map +1 -1
- package/es/render/contributions/render/contributions/arc-contribution-render.js +3 -3
- package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/area-texture-contribution-render.js +2 -5
- package/es/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js +10 -7
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js +4 -3
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/circle-contribution-render.js +3 -3
- package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/group-contribution-render.js +1 -3
- package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +1 -3
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.js +11 -11
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +3 -3
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.js +6 -8
- package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/es/render/contributions/render/draw-contribution.js +12 -14
- package/es/render/contributions/render/draw-contribution.js.map +1 -1
- package/es/render/contributions/render/draw-interceptor.js +11 -21
- package/es/render/contributions/render/draw-interceptor.js.map +1 -1
- package/es/render/contributions/render/glyph-render.js +2 -3
- package/es/render/contributions/render/glyph-render.js.map +1 -1
- package/es/render/contributions/render/graphic-render.js +4 -1
- package/es/render/contributions/render/graphic-render.js.map +1 -1
- package/es/render/contributions/render/group-render.js +7 -3
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/image-render.js +5 -2
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/incremental-area-render.js +1 -3
- package/es/render/contributions/render/incremental-area-render.js.map +1 -1
- package/es/render/contributions/render/incremental-draw-contribution.js +80 -109
- package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
- package/es/render/contributions/render/incremental-line-render.js +1 -3
- package/es/render/contributions/render/incremental-line-render.js.map +1 -1
- package/es/render/contributions/render/line-render.js +12 -16
- package/es/render/contributions/render/line-render.js.map +1 -1
- package/es/render/contributions/render/path-render.js +8 -6
- package/es/render/contributions/render/path-render.js.map +1 -1
- package/es/render/contributions/render/polygon-render.js +6 -4
- package/es/render/contributions/render/polygon-render.js.map +1 -1
- package/es/render/contributions/render/pyramid3d-render.js +3 -5
- package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
- package/es/render/contributions/render/rect-render.js +8 -6
- package/es/render/contributions/render/rect-render.js.map +1 -1
- package/es/render/contributions/render/rect3d-render.js +5 -7
- package/es/render/contributions/render/rect3d-render.js.map +1 -1
- package/es/render/contributions/render/richtext-render.js +4 -3
- package/es/render/contributions/render/richtext-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.js +11 -14
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/text-render.js +9 -8
- package/es/render/contributions/render/text-render.js.map +1 -1
- package/es/render/contributions/render/utils.js +1 -1
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/render/render-service.js +11 -2
- package/es/render/render-service.js.map +1 -1
- package/es/resource-loader/loader.js +12 -17
- package/es/resource-loader/loader.js.map +1 -1
- package/es/tapable/Hook.js +3 -0
- package/es/tapable/Hook.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/bounds-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AAgCnC,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"sources":["../src/common/bounds-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAG/C,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AAgCnC,MAAM,OAAO,aAAa;IACxB,MAAM,CAAU;IAChB,YAAY,MAAe;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,MAAe;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAGD,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,CAAS,EAAE,EAAU,EAAE,EAAU,EAAE,GAAY;QACzE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,eAAe,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YAChC,OAAO;SACR;QAED,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;QACrB,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;QACrB,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QACN,IAAI,CAAC,CAAC;QAEN,SAAS,MAAM,CAAC,CAAS;YACvB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,EAAE;gBACZ,IAAI,GAAG,CAAC,CAAC;aACV;YACD,IAAI,CAAC,GAAG,IAAI,EAAE;gBACZ,IAAI,GAAG,CAAC,CAAC;aACV;YACD,IAAI,CAAC,GAAG,IAAI,EAAE;gBACZ,IAAI,GAAG,CAAC,CAAC;aACV;YACD,IAAI,CAAC,GAAG,IAAI,EAAE;gBACZ,IAAI,GAAG,CAAC,CAAC;aACV;QACH,CAAC;QAGD,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,MAAM,CAAC,EAAE,CAAC,CAAC;QAEX,IAAI,EAAE,KAAK,EAAE,EAAE;YACb,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;YACd,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,EAAE,IAAI,GAAG,CAAC;aACX;YACD,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;YACd,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,EAAE,IAAI,GAAG,CAAC;aACX;YAED,IAAI,EAAE,GAAG,EAAE,EAAE;gBACX,GAAG,GAAG,CAAC,GAAG,CAAC;gBACX,CAAC,GAAG,EAAE,CAAC;gBACP,EAAE,GAAG,EAAE,CAAC;gBACR,EAAE,GAAG,CAAC,CAAC;aACR;YAED,IAAI,GAAG,EAAE;gBACP,EAAE,IAAI,GAAG,CAAC;gBACV,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;gBACvB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE;oBAC7C,MAAM,CAAC,CAAC,CAAC,CAAC;iBACX;aACF;iBAAM;gBACL,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;gBAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;oBAChD,MAAM,CAAC,CAAC,CAAC,CAAC;iBACX;aACF;SACF;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,MAAc;QAClE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,CAAS,EAAE,CAAS;QACxF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,SAAS;IAET,CAAC;IAED,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAE,CAAS,EAAE,CAAS;QAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,GAAG,MAAW;QAEpB,OAAO;IACT,CAAC;CACF","file":"bounds-context.js","sourcesContent":["import type { IBounds } from '@visactor/vutils';\nimport { halfPi, tau } from '@visactor/vutils';\nimport type { IPath2D } from '../interface';\n\nconst circleThreshold = tau - 1e-8;\n\n/**\n * 借鉴 https://github.com/vega/vega/blob/b45cf431cd6c0d0c0e1567f087f9b3b55bc236fa/packages/vega-scenegraph/src/bound/boundContext.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 */\nexport class BoundsContext implements IPath2D {\n bounds: IBounds;\n constructor(bounds: IBounds) {\n this.init(bounds);\n }\n\n init(bounds: IBounds) {\n this.bounds = bounds;\n }\n\n // @ts-ignore\n arc(cx: number, cy: number, r: number, sa: number, ea: number, ccw: boolean) {\n if (Math.abs(ea - sa) > circleThreshold) {\n this.bounds.add(cx - r, cy - r);\n this.bounds.add(cx + r, cy + r);\n return;\n }\n\n let xmin = Infinity;\n let xmax = -Infinity;\n let ymin = Infinity;\n let ymax = -Infinity;\n let s;\n let i;\n let x;\n let y;\n\n function update(a: number) {\n x = r * Math.cos(a);\n y = r * Math.sin(a);\n if (x < xmin) {\n xmin = x;\n }\n if (x > xmax) {\n xmax = x;\n }\n if (y < ymin) {\n ymin = y;\n }\n if (y > ymax) {\n ymax = y;\n }\n }\n\n // Sample end points and interior points aligned with 90 degrees\n update(sa);\n update(ea);\n\n if (ea !== sa) {\n sa = sa % tau;\n if (sa < 0) {\n sa += tau;\n }\n ea = ea % tau;\n if (ea < 0) {\n ea += tau;\n }\n\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa;\n sa = ea;\n ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= tau;\n s = sa - (sa % halfPi);\n for (i = 0; i < 4 && s > ea; ++i, s -= halfPi) {\n update(s);\n }\n } else {\n s = sa - (sa % halfPi) + halfPi;\n for (i = 0; i < 4 && s < ea; ++i, s = s + halfPi) {\n update(s);\n }\n }\n }\n\n this.bounds.add(cx + xmin, cy + ymin);\n this.bounds.add(cx + xmax, cy + ymax);\n }\n // @ts-ignore\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n throw new Error('不支持arcTo');\n }\n // @ts-ignore\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void {\n this.bounds.add(cp1x, cp1y);\n this.bounds.add(cp2x, cp2y);\n this.bounds.add(x, y);\n }\n // @ts-ignore\n closePath(): void {\n // do nothing\n }\n // @ts-ignore\n ellipse(): void {\n throw new Error('不支持ellipse');\n }\n // @ts-ignore\n lineTo(x: number, y: number): void {\n this.bounds.add(x, y);\n }\n // @ts-ignore\n moveTo(x: number, y: number): void {\n this.bounds.add(x, y);\n }\n // @ts-ignore\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void {\n this.bounds.add(cpx, cpy);\n this.bounds.add(x, y);\n }\n // @ts-ignore\n rect(x: number, y: number, w: number, h: number): void {\n this.bounds.add(x, y);\n this.bounds.add(x + w, y + h);\n }\n\n clear() {\n this.bounds.clear();\n }\n\n release(...params: any): void {\n // 不需要dispose\n return;\n }\n}\n"]}
|
|
@@ -18,7 +18,6 @@ export function createColor(context, c, params, offsetX, offsetY) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function createLinearGradient(context, color, params, offsetX = 0, offsetY = 0) {
|
|
21
|
-
var _a, _b, _c, _d;
|
|
22
21
|
const bounds = params.AABBBounds;
|
|
23
22
|
if (!bounds) return;
|
|
24
23
|
let w = bounds.x2 - bounds.x1, h = bounds.y2 - bounds.y1, x = bounds.x1 - offsetX, y = bounds.y1 - offsetY;
|
|
@@ -27,14 +26,13 @@ function createLinearGradient(context, color, params, offsetX = 0, offsetY = 0)
|
|
|
27
26
|
if (scaleX * scaleY == 0) return;
|
|
28
27
|
w /= scaleX, h /= scaleY, x /= scaleX, y /= scaleY;
|
|
29
28
|
}
|
|
30
|
-
const canvasGradient = context.createLinearGradient(x + (
|
|
29
|
+
const canvasGradient = context.createLinearGradient(x + (color.x0 ?? 0) * w, y + (color.y0 ?? 0) * h, x + (color.x1 ?? 1) * w, y + (color.y1 ?? 0) * h);
|
|
31
30
|
return color.stops.forEach((stop => {
|
|
32
31
|
canvasGradient.addColorStop(stop.offset, stop.color);
|
|
33
32
|
})), canvasGradient;
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
function createRadialGradient(context, color, params, offsetX = 0, offsetY = 0) {
|
|
37
|
-
var _a, _b, _c, _d, _e, _f;
|
|
38
36
|
const bounds = params.AABBBounds;
|
|
39
37
|
if (!bounds) return;
|
|
40
38
|
let w = bounds.x2 - bounds.x1, h = bounds.y2 - bounds.y1, x = bounds.x1 - offsetX, y = bounds.y1 - offsetY;
|
|
@@ -43,14 +41,13 @@ function createRadialGradient(context, color, params, offsetX = 0, offsetY = 0)
|
|
|
43
41
|
if (scaleX * scaleY == 0) return;
|
|
44
42
|
x /= scaleX, y /= scaleY, w /= scaleX, h /= scaleY;
|
|
45
43
|
}
|
|
46
|
-
const canvasGradient = context.createRadialGradient(x + (
|
|
44
|
+
const canvasGradient = context.createRadialGradient(x + (color.x0 ?? .5) * w, y + (color.y0 ?? .5) * h, Math.max(w, h) * (color.r0 ?? 0), x + (color.x1 ?? .5) * w, y + (color.y1 ?? .5) * h, Math.max(w, h) * (color.r1 ?? .5));
|
|
47
45
|
return color.stops.forEach((stop => {
|
|
48
46
|
canvasGradient.addColorStop(stop.offset, stop.color);
|
|
49
47
|
})), canvasGradient;
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
function createConicGradient(context, color, params, offsetX = 0, offsetY = 0) {
|
|
53
|
-
var _a, _b;
|
|
54
51
|
const bounds = params.AABBBounds;
|
|
55
52
|
if (!bounds) return;
|
|
56
53
|
let w = bounds.x2 - bounds.x1, h = bounds.y2 - bounds.y1, x = bounds.x1 - offsetX, y = bounds.y1 - offsetY;
|
|
@@ -59,7 +56,7 @@ function createConicGradient(context, color, params, offsetX = 0, offsetY = 0) {
|
|
|
59
56
|
if (scaleX * scaleY == 0) return;
|
|
60
57
|
w /= scaleX, h /= scaleY, x /= scaleX, y /= scaleY;
|
|
61
58
|
}
|
|
62
|
-
const canvasGradient = context.createConicGradient(x + (
|
|
59
|
+
const canvasGradient = context.createConicGradient(x + (color.x ?? 0) * w, y + (color.y ?? 0) * h, color.startAngle, color.endAngle);
|
|
63
60
|
return color.stops.forEach((stop => {
|
|
64
61
|
canvasGradient.addColorStop(stop.offset, stop.color);
|
|
65
62
|
})), canvasGradient.GetPattern(w + x, h + y, undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/canvas-utils.ts"],"names":[],"mappings":"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","file":"canvas-utils.js","sourcesContent":["import type { IColor, IConicalGradient, ILinearGradient, IRadialGradient } from '../interface/color';\nimport type { IContext2d, ITransform } from '../interface';\nimport { ICommonStyleParams } from '../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { IMatrix, isArray } from '@visactor/vutils';\nimport { GradientParser } from './color-utils';\n\nexport function getScaledStroke(context: IContext2d, width: number, dpr: number) {\n let strokeWidth = width;\n const { a, b, c, d } = context.currentMatrix;\n const scaleX = Math.sign(a) * Math.sqrt(a * a + b * b);\n const scaleY = Math.sign(d) * Math.sqrt(c * c + d * d);\n // 如果没有scaleX和scaleY,那么认为什么都不用绘制\n if (scaleX + scaleY === 0) {\n return 0;\n }\n strokeWidth = (strokeWidth / Math.abs(scaleX + scaleY)) * 2 * dpr;\n return strokeWidth;\n}\n\nexport function createColor(\n context: IContext2d,\n c: string | IColor | Array<string | IColor> | boolean,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number,\n offsetY: number\n): string | CanvasGradient {\n if (!c || c === true) {\n return 'black';\n }\n let result: string | CanvasGradient | undefined;\n let color: string | IColor;\n if (isArray(c)) {\n for (let i = 0; i < c.length; i++) {\n color = c[i];\n if (color) {\n break;\n }\n }\n } else {\n color = c;\n }\n color = GradientParser.Parse(color);\n if (typeof color === 'string') {\n return color;\n }\n // TODO 不同scaleCenter有问题\n if (color.gradient === 'linear') {\n result = createLinearGradient(context, color, params, offsetX, offsetY);\n } else if (color.gradient === 'conical') {\n result = createConicGradient(context, color, params, offsetX, offsetY);\n } else if (color.gradient === 'radial') {\n result = createRadialGradient(context, color, params, offsetX, offsetY);\n }\n return result || 'orange';\n}\n\nfunction createLinearGradient(\n context: IContext2d,\n color: ILinearGradient,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number = 0,\n offsetY: number = 0\n) {\n const bounds = params.AABBBounds;\n if (!bounds) {\n return;\n }\n let w = bounds.x2 - bounds.x1;\n let h = bounds.y2 - bounds.y1;\n let x = bounds.x1 - offsetX;\n let y = bounds.y1 - offsetY;\n if (params.attribute) {\n const { scaleX = 1, scaleY = 1 } = params.attribute;\n if (scaleX * scaleY === 0) {\n return;\n }\n w /= scaleX;\n h /= scaleY;\n x /= scaleX;\n y /= scaleY;\n }\n\n const canvasGradient = context.createLinearGradient(\n x + (color.x0 ?? 0) * w,\n y + (color.y0 ?? 0) * h,\n x + (color.x1 ?? 1) * w,\n y + (color.y1 ?? 0) * h\n );\n color.stops.forEach(stop => {\n canvasGradient.addColorStop(stop.offset, stop.color);\n });\n return canvasGradient;\n}\n\nfunction createRadialGradient(\n context: IContext2d,\n color: IRadialGradient,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number = 0,\n offsetY: number = 0\n) {\n const bounds = params.AABBBounds;\n if (!bounds) {\n return;\n }\n let w = bounds.x2 - bounds.x1;\n let h = bounds.y2 - bounds.y1;\n let x = bounds.x1 - offsetX;\n let y = bounds.y1 - offsetY;\n if (params.attribute) {\n const { scaleX = 1, scaleY = 1 } = params.attribute;\n if (scaleX * scaleY === 0) {\n return;\n }\n x /= scaleX;\n y /= scaleY;\n w /= scaleX;\n h /= scaleY;\n }\n const canvasGradient = context.createRadialGradient(\n x + (color.x0 ?? 0.5) * w,\n y + (color.y0 ?? 0.5) * h,\n Math.max(w, h) * (color.r0 ?? 0),\n x + (color.x1 ?? 0.5) * w,\n y + (color.y1 ?? 0.5) * h,\n Math.max(w, h) * (color.r1 ?? 0.5)\n );\n color.stops.forEach(stop => {\n canvasGradient.addColorStop(stop.offset, stop.color);\n });\n return canvasGradient;\n}\n\nfunction createConicGradient(\n context: IContext2d,\n color: IConicalGradient,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number = 0,\n offsetY: number = 0\n) {\n const bounds = params.AABBBounds;\n if (!bounds) {\n return;\n }\n let w = bounds.x2 - bounds.x1;\n let h = bounds.y2 - bounds.y1;\n let x = bounds.x1 - offsetX;\n let y = bounds.y1 - offsetY;\n if (params.attribute) {\n const { scaleX = 1, scaleY = 1 } = params.attribute;\n if (scaleX * scaleY === 0) {\n return;\n }\n w /= scaleX;\n h /= scaleY;\n x /= scaleX;\n y /= scaleY;\n }\n\n const canvasGradient = context.createConicGradient(\n x + (color.x ?? 0) * w,\n y + (color.y ?? 0) * h,\n color.startAngle,\n color.endAngle\n );\n color.stops.forEach(stop => {\n canvasGradient.addColorStop(stop.offset, stop.color);\n });\n\n let deltaAngle;\n return (canvasGradient as any).GetPattern(w + x, h + y, deltaAngle);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/canvas-utils.ts"],"names":[],"mappings":"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","file":"canvas-utils.js","sourcesContent":["import type { IColor, IConicalGradient, ILinearGradient, IRadialGradient } from '../interface/color';\nimport type { IContext2d, ITransform } from '../interface';\nimport { ICommonStyleParams } from '../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { IMatrix, isArray } from '@visactor/vutils';\nimport { GradientParser } from './color-utils';\n\nexport function getScaledStroke(context: IContext2d, width: number, dpr: number) {\n let strokeWidth = width;\n const { a, b, c, d } = context.currentMatrix;\n const scaleX = Math.sign(a) * Math.sqrt(a * a + b * b);\n const scaleY = Math.sign(d) * Math.sqrt(c * c + d * d);\n // 如果没有scaleX和scaleY,那么认为什么都不用绘制\n if (scaleX + scaleY === 0) {\n return 0;\n }\n strokeWidth = (strokeWidth / Math.abs(scaleX + scaleY)) * 2 * dpr;\n return strokeWidth;\n}\n\nexport function createColor(\n context: IContext2d,\n c: string | IColor | Array<string | IColor> | boolean,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number,\n offsetY: number\n): string | CanvasGradient {\n if (!c || c === true) {\n return 'black';\n }\n let result: string | CanvasGradient | undefined;\n let color: string | IColor;\n if (isArray(c)) {\n for (let i = 0; i < c.length; i++) {\n color = c[i];\n if (color) {\n break;\n }\n }\n } else {\n color = c;\n }\n color = GradientParser.Parse(color);\n if (typeof color === 'string') {\n return color;\n }\n // TODO 不同scaleCenter有问题\n if (color.gradient === 'linear') {\n result = createLinearGradient(context, color, params, offsetX, offsetY);\n } else if (color.gradient === 'conical') {\n result = createConicGradient(context, color, params, offsetX, offsetY);\n } else if (color.gradient === 'radial') {\n result = createRadialGradient(context, color, params, offsetX, offsetY);\n }\n return result || 'orange';\n}\n\nfunction createLinearGradient(\n context: IContext2d,\n color: ILinearGradient,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number = 0,\n offsetY: number = 0\n) {\n const bounds = params.AABBBounds;\n if (!bounds) {\n return;\n }\n let w = bounds.x2 - bounds.x1;\n let h = bounds.y2 - bounds.y1;\n let x = bounds.x1 - offsetX;\n let y = bounds.y1 - offsetY;\n if (params.attribute) {\n const { scaleX = 1, scaleY = 1 } = params.attribute;\n if (scaleX * scaleY === 0) {\n return;\n }\n w /= scaleX;\n h /= scaleY;\n x /= scaleX;\n y /= scaleY;\n }\n\n const canvasGradient = context.createLinearGradient(\n x + (color.x0 ?? 0) * w,\n y + (color.y0 ?? 0) * h,\n x + (color.x1 ?? 1) * w,\n y + (color.y1 ?? 0) * h\n );\n color.stops.forEach(stop => {\n canvasGradient.addColorStop(stop.offset, stop.color);\n });\n return canvasGradient;\n}\n\nfunction createRadialGradient(\n context: IContext2d,\n color: IRadialGradient,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number = 0,\n offsetY: number = 0\n) {\n const bounds = params.AABBBounds;\n if (!bounds) {\n return;\n }\n let w = bounds.x2 - bounds.x1;\n let h = bounds.y2 - bounds.y1;\n let x = bounds.x1 - offsetX;\n let y = bounds.y1 - offsetY;\n if (params.attribute) {\n const { scaleX = 1, scaleY = 1 } = params.attribute;\n if (scaleX * scaleY === 0) {\n return;\n }\n x /= scaleX;\n y /= scaleY;\n w /= scaleX;\n h /= scaleY;\n }\n const canvasGradient = context.createRadialGradient(\n x + (color.x0 ?? 0.5) * w,\n y + (color.y0 ?? 0.5) * h,\n Math.max(w, h) * (color.r0 ?? 0),\n x + (color.x1 ?? 0.5) * w,\n y + (color.y1 ?? 0.5) * h,\n Math.max(w, h) * (color.r1 ?? 0.5)\n );\n color.stops.forEach(stop => {\n canvasGradient.addColorStop(stop.offset, stop.color);\n });\n return canvasGradient;\n}\n\nfunction createConicGradient(\n context: IContext2d,\n color: IConicalGradient,\n params: { AABBBounds?: IBoundsLike; attribute?: Partial<ITransform> },\n offsetX: number = 0,\n offsetY: number = 0\n) {\n const bounds = params.AABBBounds;\n if (!bounds) {\n return;\n }\n let w = bounds.x2 - bounds.x1;\n let h = bounds.y2 - bounds.y1;\n let x = bounds.x1 - offsetX;\n let y = bounds.y1 - offsetY;\n if (params.attribute) {\n const { scaleX = 1, scaleY = 1 } = params.attribute;\n if (scaleX * scaleY === 0) {\n return;\n }\n w /= scaleX;\n h /= scaleY;\n x /= scaleX;\n y /= scaleY;\n }\n\n const canvasGradient = context.createConicGradient(\n x + (color.x ?? 0) * w,\n y + (color.y ?? 0) * h,\n color.startAngle,\n color.endAngle\n );\n color.stops.forEach(stop => {\n canvasGradient.addColorStop(stop.offset, stop.color);\n });\n\n let deltaAngle;\n return (canvasGradient as any).GetPattern(w + x, h + y, deltaAngle);\n}\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export const ContributionProvider = Symbol("ContributionProvider");
|
|
2
2
|
|
|
3
3
|
class ContributionProviderCache {
|
|
4
|
+
caches;
|
|
5
|
+
serviceIdentifier;
|
|
6
|
+
container;
|
|
4
7
|
constructor(serviceIdentifier, container) {
|
|
5
8
|
this.serviceIdentifier = serviceIdentifier, this.container = container;
|
|
6
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/contribution-provider.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEnE,MAAM,yBAAyB;
|
|
1
|
+
{"version":3,"sources":["../src/common/contribution-provider.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEnE,MAAM,yBAAyB;IACnB,MAAM,CAAO;IACb,iBAAiB,CAAkC;IACnD,SAAS,CAAuB;IAE1C,YAAY,iBAAkD,EAAE,SAA+B;QAC7F,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS;gBACZ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;SACtE;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAqB,EAAE,EAAO;IACrE,IAAI,CAAC,oBAAoB,CAAC;SACvB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SAC/E,gBAAgB,EAAE;SAClB,eAAe,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,IAAqB,EAAE,EAAO;IACrF,IAAI,CAAC,oBAAoB,CAAC;SACvB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,yBAAyB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SAC/E,eAAe,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC","file":"contribution-provider.js","sourcesContent":["import type { interfaces } from '../common/inversify-lite';\nimport type { IContributionProvider } from '../interface';\n\nexport const ContributionProvider = Symbol('ContributionProvider');\n\nclass ContributionProviderCache<T> implements IContributionProvider<T> {\n protected caches?: T[];\n protected serviceIdentifier: interfaces.ServiceIdentifier<T>;\n protected container: interfaces.Container;\n\n constructor(serviceIdentifier: interfaces.ServiceIdentifier<T>, container: interfaces.Container) {\n this.serviceIdentifier = serviceIdentifier;\n this.container = container;\n }\n\n getContributions(): T[] {\n if (!this.caches) {\n this.caches = [];\n this.container &&\n this.container.isBound(this.serviceIdentifier) &&\n this.caches.push(...this.container.getAll(this.serviceIdentifier));\n }\n return this.caches;\n }\n}\n\nexport function bindContributionProvider(bind: interfaces.Bind, id: any): void {\n bind(ContributionProvider)\n .toDynamicValue(({ container }) => new ContributionProviderCache(id, container))\n .inSingletonScope()\n .whenTargetNamed(id);\n}\n\nexport function bindContributionProviderNoSingletonScope(bind: interfaces.Bind, id: any): void {\n bind(ContributionProvider)\n .toDynamicValue(({ container }) => new ContributionProviderCache(id, container))\n .whenTargetNamed(id);\n}\n"]}
|
|
@@ -15,8 +15,14 @@ import { renderCommandList } from "./render-command-list";
|
|
|
15
15
|
import { calcLineCache } from "./segment";
|
|
16
16
|
|
|
17
17
|
export class CustomPath2D extends CurvePath {
|
|
18
|
+
commandList=[];
|
|
19
|
+
_boundsContext;
|
|
20
|
+
_ctx;
|
|
21
|
+
direction;
|
|
22
|
+
transformCbList;
|
|
23
|
+
toStringCbList;
|
|
18
24
|
constructor(ctx) {
|
|
19
|
-
super(),
|
|
25
|
+
super(), ctx && (this._ctx = ctx), this._boundsContext = new BoundsContext(this.bounds);
|
|
20
26
|
}
|
|
21
27
|
setCtx(ctx) {
|
|
22
28
|
this._ctx = ctx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/custom-path2d.ts"],"names":[],"mappings":"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","file":"custom-path2d.js","sourcesContent":["import { BoundsContext } from './bounds-context';\nimport type { CommandStrType, CommandType, ICurve, ICustomPath2D, IDirection, ILine, IPath2D } from '../interface';\nimport { CurvePath } from './segment/curve/path';\nimport { enumCommandMap, parseSvgPath } from './path-svg';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { Direction } from './enums';\nimport { drawArc, addArcToBezierPath } from './shape/arc';\nimport { renderCommandList } from './render-command-list';\nimport { calcLineCache } from './segment';\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// 基于d3-shape重构\n// https://github.com/vega/vega/blob/master/packages/vega-scenegraph/src/path/render.js\n\nexport class CustomPath2D extends CurvePath implements ICustomPath2D {\n commandList: CommandType[] = [];\n _boundsContext: IPath2D;\n _ctx?: IPath2D;\n direction?: IDirection;\n protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];\n protected toStringCbList?: ((cmd: CommandType) => string)[];\n\n constructor(ctx?: IPath2D) {\n super();\n if (ctx) {\n this._ctx = ctx;\n }\n this._boundsContext = new BoundsContext(this.bounds);\n }\n\n setCtx(ctx?: IPath2D) {\n this._ctx = ctx;\n }\n\n moveTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.M, x, y]);\n this._ctx && this._ctx.moveTo(x, y);\n return this;\n }\n lineTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.L, x, y]);\n this._ctx && this._ctx.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.Q, aCPx, aCPy, aX, aY]);\n this._ctx && this._ctx.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.C, aCP1x, aCP1y, aCP2x, aCP2y, aX, aY]);\n this._ctx && this._ctx.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n this.commandList.push([enumCommandMap.AT, aX1, aY1, aX2, aY2, aRadius]);\n this._ctx && this._ctx.arcTo(aX1, aY1, aX2, aY2, aRadius);\n return this;\n }\n ellipse(\n aX: number,\n aY: number,\n xRadius: number,\n yRadius: number,\n aRotation: number,\n aStartAngle: number,\n aEndAngle: number,\n aClockwise: boolean\n ) {\n this.commandList.push([enumCommandMap.E, aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise]);\n this._ctx && this._ctx.ellipse(aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n rect(x: number, y: number, w: number, h: number) {\n this.commandList.push([enumCommandMap.R, x, y, w, h]);\n this._ctx && this._ctx.rect(x, y, w, h);\n return this;\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n this.commandList.push([enumCommandMap.A, x, y, radius, startAngle, endAngle, counterclockwise]);\n this._ctx && this._ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n closePath() {\n this.commandList.push([enumCommandMap.Z]);\n this._ctx && this._ctx.closePath();\n return this;\n }\n\n addCurve(curve: ICurve<IPoint>) {\n this.curves.push(curve);\n // todo parse curve\n }\n clear() {\n this.transformCbList = null;\n this.commandList.length = 0;\n this.curves.length = 0;\n }\n\n beginPath() {\n this.clear();\n }\n\n toString(): string {\n if (!this.toStringCbList) {\n const list: ((cmd: CommandType) => string)[] = [];\n list[enumCommandMap.M] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.L] = (cmd: CommandType) => `L${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.Q] = (cmd: CommandType) => `Q${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]}`;\n list[enumCommandMap.C] = (cmd: CommandType) => `C${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]} ${cmd[5]} ${cmd[6]}`;\n list[enumCommandMap.A] = (cmd: CommandType) => {\n const bezierPathList: number[] = [];\n addArcToBezierPath(\n bezierPathList,\n cmd[4] as number,\n cmd[5] as number,\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[3] as number\n );\n let path = '';\n for (let i = 0; i < bezierPathList.length; i += 6) {\n path += `C${bezierPathList[i]} ${bezierPathList[i + 1]} ${bezierPathList[i + 2]} ${bezierPathList[i + 3]} ${\n bezierPathList[i + 4]\n } ${bezierPathList[i + 5]}`;\n }\n return path;\n };\n // list[enumCommandMap.AT] = this.arcToTransform;\n // list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]} h${cmd[3]} v${cmd[4]} H${cmd[1]}Z`;\n // list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = (cmd: CommandType) => `Z`;\n this.toStringCbList = list;\n }\n\n const list = this.toStringCbList;\n let path = '';\n this.commandList.forEach(c => {\n path += list[c[0]](c);\n });\n return path;\n }\n\n fromString(str: string, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n\n // 解析path字符串\n const commandStrList = parseSvgPath(str) as CommandStrType[]; // TODO: 目前正则性能较差,后续需要加上回调函数供用户直接操作绘图命令\n this._runCommandStrList(commandStrList, x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n fromLine(line: ILine) {\n const { points, curveType, clipRangeByDimension } = line.attribute;\n if (!points) {\n return;\n }\n const cache = calcLineCache(points, curveType);\n if (clipRangeByDimension === 'x') {\n this.direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n this.direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n this.direction = cache.direction;\n }\n this.curves = cache.curves;\n }\n fromCustomPath2D(path: ICustomPath2D, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n this._runCommandList(path.commandList as CommandType[], x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n transform(x: number, y: number, sx: number, sy: number) {\n const commandList = this.commandList;\n if (!this.transformCbList) {\n const list: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[] = [];\n list[enumCommandMap.M] = this.moveToTransform;\n list[enumCommandMap.L] = this.lineToTransform;\n list[enumCommandMap.Q] = this.quadraticCurveToTransform;\n list[enumCommandMap.C] = this.bezierCurveToTransform;\n list[enumCommandMap.AT] = this.arcToTransform;\n list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = this.rectTransform;\n list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = this.closePathTransform;\n this.transformCbList = list;\n }\n commandList.forEach(cmd => {\n this.transformCbList[cmd[0]](cmd, x, y, sx, sy);\n });\n this._updateBounds();\n }\n\n protected moveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected lineToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected quadraticCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n }\n protected bezierCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = (cmd[5] as number) * sx + x;\n cmd[6] = (cmd[6] as number) * sy + y;\n }\n arcToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = ((cmd[5] as number) * (sx + sy)) / 2;\n }\n ellipseTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n rectTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n arcTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = ((cmd[3] as number) * (sx + sy)) / 2;\n }\n closePathTransform() {\n return;\n }\n protected _runCommandStrList(\n commandStrList: CommandStrType[],\n l: number = 0,\n t: number = 0,\n sX: number = 1,\n sY: number = 1\n ) {\n let current; // current instruction\n let previous = null;\n let x = 0; // current x\n let y = 0; // current y\n // let sX = 0;\n // let sY = 0;\n let controlX = 0; // current control point x\n let controlY = 0; // current control point y\n let tempX;\n let tempY;\n let tempControlX;\n let tempControlY;\n\n // if (isNil(l)) l = 0;\n // if (isNil(t)) t = 0;\n // if (isNil(sX)) sX = 1;\n // if (isNil(sY)) sY = sX;\n\n for (let i = 0, len = commandStrList.length; i < len; ++i) {\n current = commandStrList[i];\n if (sX !== 1 || sY !== 1) {\n current = scale(current, sX, sY);\n }\n\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n x += current[1] as number;\n y += current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1] as number;\n y += current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + (current[5] as number);\n tempY = y + (current[6] as number);\n controlX = x + (current[3] as number);\n controlY = y + (current[4] as number);\n this.bezierCurveTo(\n x + (current[1] as number) + l, // x1\n y + (current[2] as number) + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5] as number;\n y = current[6] as number;\n controlX = current[3] as number;\n controlY = current[4] as number;\n this.bezierCurveTo(\n (current[1] as number) + l,\n (current[2] as number) + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + (current[1] as number) + l,\n y + (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n (current[1] as number) + l,\n (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1] as number;\n controlY = current[2] as number;\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n\n this.quadraticCurveTo((current[1] as number) + l, (current[2] as number) + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1] as number;\n controlY = current[2] as number;\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[1] as number);\n tempY = y + (current[2] as number);\n\n if ((previous![0] as string).match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous![0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - (tempControlX as number);\n controlY = 2 * y - (tempControlY as number);\n } else if (previous![0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n break;\n\n case 'T':\n tempX = current[1] as number;\n tempY = current[2] as number;\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + x + l,\n (current[7] as number) + y + t\n ]);\n x += current[6] as number;\n y += current[7] as number;\n break;\n\n case 'A':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + l,\n (current[7] as number) + t\n ]);\n x = current[6] as number;\n y = current[7] as number;\n break;\n\n case 'z':\n case 'Z':\n this.closePath();\n break;\n }\n previous = current;\n }\n }\n\n protected _runCommandList(commandList: CommandType[], l: number = 0, t: number = 0, sX: number = 1, sY: number = 1) {\n if (l === 0 && t === 0 && sX === 1 && sY === 1) {\n this.commandList = commandList.map(entry => entry.slice() as CommandType);\n return;\n }\n\n for (let i = 0, len = commandList.length; i < len; ++i) {\n const current = commandList[i].slice() as CommandType;\n\n switch (\n current[0] // first letter\n ) {\n case enumCommandMap.L:\n this.lineToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.M:\n this.moveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.C:\n this.bezierCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.Q:\n this.quadraticCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.A:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.E:\n this.ellipseTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.R:\n this.rectTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.AT:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.Z:\n this.closePath();\n break;\n }\n }\n }\n private _updateBounds() {\n this.bounds.clear();\n renderCommandList(this.commandList, this._boundsContext as unknown as ICustomPath2D);\n }\n\n release(): void {\n this.commandList = [];\n this._boundsContext = null;\n this._ctx = null;\n }\n\n getLength(): number {\n if (this.direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (this.direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n return this.curves.reduce((l, c) => l + c.getLength(), 0);\n }\n\n getAttrAt(distance: number): { pos: IPointLike; angle: number } {\n if (!this.curves) {\n return { pos: { x: 0, y: 0 }, angle: 0 };\n }\n let _dis = 0;\n let curve: ICurve<IPoint>;\n for (let i = 0; i < this.curves.length; i++) {\n curve = this.curves[i];\n const cl = curve.getLength(this.direction);\n if (_dis + cl >= distance) {\n break;\n } else {\n _dis += cl;\n }\n }\n const t = (distance - _dis) / curve.getLength(this.direction);\n const pos = curve.getPointAt(t);\n const angle = curve.getAngleAt(t);\n return { pos, angle };\n }\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current: CommandStrType, sX: number, sY: number) {\n const c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = sX * (current[1] as number);\n temp[2] = sY * (current[2] as number);\n temp[3] = current[3] as number;\n temp[4] = current[4] as number;\n temp[5] = current[5] as number;\n temp[6] = sX * (current[6] as number);\n temp[7] = sY * (current[7] as number);\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * (current[1] as number);\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * (current[1] as number);\n } else {\n for (let i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 === 1 ? sX : sY) * (current[i] as number);\n }\n }\n return temp;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/custom-path2d.ts"],"names":[],"mappings":"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","file":"custom-path2d.js","sourcesContent":["import { BoundsContext } from './bounds-context';\nimport type { CommandStrType, CommandType, ICurve, ICustomPath2D, IDirection, ILine, IPath2D } from '../interface';\nimport { CurvePath } from './segment/curve/path';\nimport { enumCommandMap, parseSvgPath } from './path-svg';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { Direction } from './enums';\nimport { drawArc, addArcToBezierPath } from './shape/arc';\nimport { renderCommandList } from './render-command-list';\nimport { calcLineCache } from './segment';\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// 基于d3-shape重构\n// https://github.com/vega/vega/blob/master/packages/vega-scenegraph/src/path/render.js\n\nexport class CustomPath2D extends CurvePath implements ICustomPath2D {\n commandList: CommandType[] = [];\n _boundsContext: IPath2D;\n _ctx?: IPath2D;\n direction?: IDirection;\n protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];\n protected toStringCbList?: ((cmd: CommandType) => string)[];\n\n constructor(ctx?: IPath2D) {\n super();\n if (ctx) {\n this._ctx = ctx;\n }\n this._boundsContext = new BoundsContext(this.bounds);\n }\n\n setCtx(ctx?: IPath2D) {\n this._ctx = ctx;\n }\n\n moveTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.M, x, y]);\n this._ctx && this._ctx.moveTo(x, y);\n return this;\n }\n lineTo(x: number, y: number) {\n this.commandList.push([enumCommandMap.L, x, y]);\n this._ctx && this._ctx.lineTo(x, y);\n return this;\n }\n quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.Q, aCPx, aCPy, aX, aY]);\n this._ctx && this._ctx.quadraticCurveTo(aCPx, aCPy, aX, aY);\n return this;\n }\n bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number) {\n this.commandList.push([enumCommandMap.C, aCP1x, aCP1y, aCP2x, aCP2y, aX, aY]);\n this._ctx && this._ctx.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n return this;\n }\n arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number) {\n this.commandList.push([enumCommandMap.AT, aX1, aY1, aX2, aY2, aRadius]);\n this._ctx && this._ctx.arcTo(aX1, aY1, aX2, aY2, aRadius);\n return this;\n }\n ellipse(\n aX: number,\n aY: number,\n xRadius: number,\n yRadius: number,\n aRotation: number,\n aStartAngle: number,\n aEndAngle: number,\n aClockwise: boolean\n ) {\n this.commandList.push([enumCommandMap.E, aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise]);\n this._ctx && this._ctx.ellipse(aX, aY, xRadius, yRadius, aRotation, aStartAngle, aEndAngle, aClockwise);\n return this;\n }\n rect(x: number, y: number, w: number, h: number) {\n this.commandList.push([enumCommandMap.R, x, y, w, h]);\n this._ctx && this._ctx.rect(x, y, w, h);\n return this;\n }\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) {\n this.commandList.push([enumCommandMap.A, x, y, radius, startAngle, endAngle, counterclockwise]);\n this._ctx && this._ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);\n return this;\n }\n closePath() {\n this.commandList.push([enumCommandMap.Z]);\n this._ctx && this._ctx.closePath();\n return this;\n }\n\n addCurve(curve: ICurve<IPoint>) {\n this.curves.push(curve);\n // todo parse curve\n }\n clear() {\n this.transformCbList = null;\n this.commandList.length = 0;\n this.curves.length = 0;\n }\n\n beginPath() {\n this.clear();\n }\n\n toString(): string {\n if (!this.toStringCbList) {\n const list: ((cmd: CommandType) => string)[] = [];\n list[enumCommandMap.M] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.L] = (cmd: CommandType) => `L${cmd[1]} ${cmd[2]}`;\n list[enumCommandMap.Q] = (cmd: CommandType) => `Q${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]}`;\n list[enumCommandMap.C] = (cmd: CommandType) => `C${cmd[1]} ${cmd[2]} ${cmd[3]} ${cmd[4]} ${cmd[5]} ${cmd[6]}`;\n list[enumCommandMap.A] = (cmd: CommandType) => {\n const bezierPathList: number[] = [];\n addArcToBezierPath(\n bezierPathList,\n cmd[4] as number,\n cmd[5] as number,\n cmd[1] as number,\n cmd[2] as number,\n cmd[3] as number,\n cmd[3] as number\n );\n let path = '';\n for (let i = 0; i < bezierPathList.length; i += 6) {\n path += `C${bezierPathList[i]} ${bezierPathList[i + 1]} ${bezierPathList[i + 2]} ${bezierPathList[i + 3]} ${\n bezierPathList[i + 4]\n } ${bezierPathList[i + 5]}`;\n }\n return path;\n };\n // list[enumCommandMap.AT] = this.arcToTransform;\n // list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = (cmd: CommandType) => `M${cmd[1]} ${cmd[2]} h${cmd[3]} v${cmd[4]} H${cmd[1]}Z`;\n // list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = (cmd: CommandType) => `Z`;\n this.toStringCbList = list;\n }\n\n const list = this.toStringCbList;\n let path = '';\n this.commandList.forEach(c => {\n path += list[c[0]](c);\n });\n return path;\n }\n\n fromString(str: string, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n\n // 解析path字符串\n const commandStrList = parseSvgPath(str) as CommandStrType[]; // TODO: 目前正则性能较差,后续需要加上回调函数供用户直接操作绘图命令\n this._runCommandStrList(commandStrList, x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n fromLine(line: ILine) {\n const { points, curveType, clipRangeByDimension } = line.attribute;\n if (!points) {\n return;\n }\n const cache = calcLineCache(points, curveType);\n if (clipRangeByDimension === 'x') {\n this.direction = Direction.ROW;\n } else if (clipRangeByDimension === 'y') {\n this.direction = Direction.COLUMN;\n } else if (clipRangeByDimension === 'auto') {\n this.direction = cache.direction;\n }\n this.curves = cache.curves;\n }\n fromCustomPath2D(path: ICustomPath2D, x?: number, y?: number, sX?: number, sY?: number) {\n this.clear();\n this._runCommandList(path.commandList as CommandType[], x, y, sX, sY);\n\n // 更新bounds\n this._updateBounds();\n return this;\n }\n transform(x: number, y: number, sx: number, sy: number) {\n const commandList = this.commandList;\n if (!this.transformCbList) {\n const list: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[] = [];\n list[enumCommandMap.M] = this.moveToTransform;\n list[enumCommandMap.L] = this.lineToTransform;\n list[enumCommandMap.Q] = this.quadraticCurveToTransform;\n list[enumCommandMap.C] = this.bezierCurveToTransform;\n list[enumCommandMap.AT] = this.arcToTransform;\n list[enumCommandMap.E] = this.ellipseTransform;\n list[enumCommandMap.R] = this.rectTransform;\n list[enumCommandMap.A] = this.arcTransform;\n list[enumCommandMap.Z] = this.closePathTransform;\n this.transformCbList = list;\n }\n commandList.forEach(cmd => {\n this.transformCbList[cmd[0]](cmd, x, y, sx, sy);\n });\n this._updateBounds();\n }\n\n protected moveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected lineToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n }\n protected quadraticCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n }\n protected bezierCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = (cmd[5] as number) * sx + x;\n cmd[6] = (cmd[6] as number) * sy + y;\n }\n arcToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx + x;\n cmd[4] = (cmd[4] as number) * sy + y;\n cmd[5] = ((cmd[5] as number) * (sx + sy)) / 2;\n }\n ellipseTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n rectTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = (cmd[3] as number) * sx;\n cmd[4] = (cmd[4] as number) * sy;\n }\n arcTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number) {\n cmd[1] = (cmd[1] as number) * sx + x;\n cmd[2] = (cmd[2] as number) * sy + y;\n cmd[3] = ((cmd[3] as number) * (sx + sy)) / 2;\n }\n closePathTransform() {\n return;\n }\n protected _runCommandStrList(\n commandStrList: CommandStrType[],\n l: number = 0,\n t: number = 0,\n sX: number = 1,\n sY: number = 1\n ) {\n let current; // current instruction\n let previous = null;\n let x = 0; // current x\n let y = 0; // current y\n // let sX = 0;\n // let sY = 0;\n let controlX = 0; // current control point x\n let controlY = 0; // current control point y\n let tempX;\n let tempY;\n let tempControlX;\n let tempControlY;\n\n // if (isNil(l)) l = 0;\n // if (isNil(t)) t = 0;\n // if (isNil(sX)) sX = 1;\n // if (isNil(sY)) sY = sX;\n\n for (let i = 0, len = commandStrList.length; i < len; ++i) {\n current = commandStrList[i];\n if (sX !== 1 || sY !== 1) {\n current = scale(current, sX, sY);\n }\n\n switch (\n current[0] // first letter\n ) {\n case 'l': // lineto, relative\n x += current[1] as number;\n y += current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1] as number;\n this.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1] as number;\n y += current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1] as number;\n y = current[2] as number;\n this.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + (current[5] as number);\n tempY = y + (current[6] as number);\n controlX = x + (current[3] as number);\n controlY = y + (current[4] as number);\n this.bezierCurveTo(\n x + (current[1] as number) + l, // x1\n y + (current[2] as number) + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5] as number;\n y = current[6] as number;\n controlX = current[3] as number;\n controlY = current[4] as number;\n this.bezierCurveTo(\n (current[1] as number) + l,\n (current[2] as number) + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + (current[1] as number) + l,\n y + (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.bezierCurveTo(\n controlX + l,\n controlY + t,\n (current[1] as number) + l,\n (current[2] as number) + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1] as number;\n controlY = current[2] as number;\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[3] as number);\n tempY = y + (current[4] as number);\n\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3] as number;\n tempY = current[4] as number;\n\n this.quadraticCurveTo((current[1] as number) + l, (current[2] as number) + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1] as number;\n controlY = current[2] as number;\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + (current[1] as number);\n tempY = y + (current[2] as number);\n\n if ((previous![0] as string).match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous![0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - (tempControlX as number);\n controlY = 2 * y - (tempControlY as number);\n } else if (previous![0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n tempControlX = controlX;\n tempControlY = controlY;\n\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + (current[1] as number);\n controlY = y + (current[2] as number);\n break;\n\n case 'T':\n tempX = current[1] as number;\n tempY = current[2] as number;\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + x + l,\n (current[7] as number) + y + t\n ]);\n x += current[6] as number;\n y += current[7] as number;\n break;\n\n case 'A':\n drawArc(this, x + l, y + t, [\n current[1] as number,\n current[2] as number,\n current[3] as number,\n current[4] as number,\n current[5] as number,\n (current[6] as number) + l,\n (current[7] as number) + t\n ]);\n x = current[6] as number;\n y = current[7] as number;\n break;\n\n case 'z':\n case 'Z':\n this.closePath();\n break;\n }\n previous = current;\n }\n }\n\n protected _runCommandList(commandList: CommandType[], l: number = 0, t: number = 0, sX: number = 1, sY: number = 1) {\n if (l === 0 && t === 0 && sX === 1 && sY === 1) {\n this.commandList = commandList.map(entry => entry.slice() as CommandType);\n return;\n }\n\n for (let i = 0, len = commandList.length; i < len; ++i) {\n const current = commandList[i].slice() as CommandType;\n\n switch (\n current[0] // first letter\n ) {\n case enumCommandMap.L:\n this.lineToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.M:\n this.moveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.C:\n this.bezierCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.Q:\n this.quadraticCurveToTransform(current, l, t, sX, sY);\n break;\n\n case enumCommandMap.A:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.E:\n this.ellipseTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.R:\n this.rectTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.AT:\n this.arcToTransform(current, l, t, sX, sY);\n break;\n case enumCommandMap.Z:\n this.closePath();\n break;\n }\n }\n }\n private _updateBounds() {\n this.bounds.clear();\n renderCommandList(this.commandList, this._boundsContext as unknown as ICustomPath2D);\n }\n\n release(): void {\n this.commandList = [];\n this._boundsContext = null;\n this._ctx = null;\n }\n\n getLength(): number {\n if (this.direction === Direction.COLUMN) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.y - ec.p1.y);\n } else if (this.direction === Direction.ROW) {\n if (!this.curves.length) {\n return 0;\n }\n const sc = this.curves[0];\n const ec = this.curves[this.curves.length - 1];\n return abs(sc.p0.x - ec.p1.x);\n }\n return this.curves.reduce((l, c) => l + c.getLength(), 0);\n }\n\n getAttrAt(distance: number): { pos: IPointLike; angle: number } {\n if (!this.curves) {\n return { pos: { x: 0, y: 0 }, angle: 0 };\n }\n let _dis = 0;\n let curve: ICurve<IPoint>;\n for (let i = 0; i < this.curves.length; i++) {\n curve = this.curves[i];\n const cl = curve.getLength(this.direction);\n if (_dis + cl >= distance) {\n break;\n } else {\n _dis += cl;\n }\n }\n const t = (distance - _dis) / curve.getLength(this.direction);\n const pos = curve.getPointAt(t);\n const angle = curve.getAngleAt(t);\n return { pos, angle };\n }\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\n\nfunction scale(current: CommandStrType, sX: number, sY: number) {\n const c = (temp[0] = current[0]);\n if (c === 'a' || c === 'A') {\n temp[1] = sX * (current[1] as number);\n temp[2] = sY * (current[2] as number);\n temp[3] = current[3] as number;\n temp[4] = current[4] as number;\n temp[5] = current[5] as number;\n temp[6] = sX * (current[6] as number);\n temp[7] = sY * (current[7] as number);\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * (current[1] as number);\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * (current[1] as number);\n } else {\n for (let i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 === 1 ? sX : sY) * (current[i] as number);\n }\n }\n return temp;\n}\n"]}
|
package/es/common/generator.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/generator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;
|
|
1
|
+
{"version":3,"sources":["../src/common/generator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;IACZ,MAAM,CAAC,iBAAiB,GAAW,CAAC,CAAC;IAE7C,MAAM,CAAC,kBAAkB;QACvB,OAAO,SAAS,CAAC,iBAAiB,EAAE,CAAC;IACvC,CAAC","file":"generator.js","sourcesContent":["export class Generator {\n private static auto_increment_id: number = 0;\n\n static GenAutoIncrementId(): number {\n return Generator.auto_increment_id++;\n }\n}\n"]}
|
|
@@ -3,6 +3,18 @@ import { Generator } from "../generator";
|
|
|
3
3
|
import { BindingScopeEnum, BindingTypeEnum } from "./literal_types";
|
|
4
4
|
|
|
5
5
|
class Binding {
|
|
6
|
+
id;
|
|
7
|
+
moduleId;
|
|
8
|
+
activated;
|
|
9
|
+
serviceIdentifier;
|
|
10
|
+
implementationType;
|
|
11
|
+
cache;
|
|
12
|
+
dynamicValue;
|
|
13
|
+
scope;
|
|
14
|
+
type;
|
|
15
|
+
factory;
|
|
16
|
+
provider;
|
|
17
|
+
constraint;
|
|
6
18
|
constructor(serviceIdentifier, scope) {
|
|
7
19
|
this.id = Generator.GenAutoIncrementId(), this.activated = !1, this.serviceIdentifier = serviceIdentifier,
|
|
8
20
|
this.scope = scope, this.type = BindingTypeEnum.Invalid, this.constraint = request => !0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,OAAO;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,OAAO;IACX,EAAE,CAAS;IACX,QAAQ,CAAwC;IAKhD,SAAS,CAAU;IAGnB,iBAAiB,CAA2C;IAG5D,kBAAkB,CAAqD;IAGvE,KAAK,CAAoB;IAGzB,YAAY,CAA6C;IAGzD,KAAK,CAA0B;IAG/B,IAAI,CAAyB;IAG7B,OAAO,CAA4C;IAGnD,QAAQ,CAA6C;IAGrD,UAAU,CAAgC;IAQ1C,YAAY,iBAA2D,EAAE,KAA8B;QACrG,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAkC,EAAE,EAAE,CAAC,IAAI,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAGrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QACtF,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAGnC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,OAAO,EAAE,OAAO,EAAE,CAAC","file":"binding.js","sourcesContent":["import { Generator } from '../generator';\nimport type { interfaces } from './interfaces';\nimport { BindingScopeEnum, BindingTypeEnum } from './literal_types';\n\nclass Binding<TActivated> implements interfaces.Binding<TActivated> {\n id: number;\n moduleId!: interfaces.ContainerModuleBase['id'];\n\n // Determines weather the bindings has been already activated\n // The activation action takes place when an instance is resolved\n // If the scope is singleton it only happens once\n activated: boolean;\n\n // A runtime identifier because at runtime we don't have interfaces\n serviceIdentifier: interfaces.ServiceIdentifier<TActivated>;\n\n // constructor from binding to or toConstructor\n implementationType: interfaces.Newable<TActivated> | TActivated | null;\n\n // Cache used to allow singleton scope and BindingType.ConstantValue bindings\n cache: TActivated | null;\n\n // Cache used to allow BindingType.DynamicValue bindings\n dynamicValue: interfaces.DynamicValue<TActivated> | null;\n\n // The scope mode to be used\n scope: interfaces.BindingScope;\n\n // The kind of binding\n type: interfaces.BindingType;\n\n // A factory method used in BindingType.Factory bindings\n factory: interfaces.FactoryCreator<unknown> | null;\n\n // An async factory method used in BindingType.Provider bindings\n provider: interfaces.ProviderCreator<unknown> | null;\n\n // A constraint used to limit the contexts in which this binding is applicable\n constraint: interfaces.ConstraintFunction;\n\n // // On activation handler (invoked just before an instance is added to cache and injected)\n // onActivation: interfaces.BindingActivation<TActivated> | null;\n\n // // On deactivation handler (invoked just before an instance is unbinded and removed from container)\n // onDeactivation: interfaces.BindingDeactivation<TActivated> | null;\n\n constructor(serviceIdentifier: interfaces.ServiceIdentifier<TActivated>, scope: interfaces.BindingScope) {\n this.id = Generator.GenAutoIncrementId();\n this.activated = false;\n this.serviceIdentifier = serviceIdentifier;\n this.scope = scope;\n this.type = BindingTypeEnum.Invalid;\n this.constraint = (request: interfaces.Request | null) => true;\n this.implementationType = null;\n this.cache = null;\n this.factory = null;\n this.provider = null;\n // this.onActivation = null;\n // this.onDeactivation = null;\n this.dynamicValue = null;\n }\n\n clone(): interfaces.Binding<TActivated> {\n const clone = new Binding(this.serviceIdentifier, this.scope);\n clone.activated = clone.scope === BindingScopeEnum.Singleton ? this.activated : false;\n clone.implementationType = this.implementationType;\n clone.dynamicValue = this.dynamicValue;\n clone.scope = this.scope;\n clone.type = this.type;\n // clone.factory = this.factory;\n clone.provider = this.provider;\n clone.constraint = this.constraint;\n // clone.onActivation = this.onActivation;\n // clone.onDeactivation = this.onDeactivation;\n clone.cache = this.cache;\n return clone;\n }\n}\n\nexport { Binding };\n"]}
|
|
@@ -11,6 +11,10 @@ import { MetadataReader } from "./metadata_reader";
|
|
|
11
11
|
import { BindingToSyntax } from "./syntax/binding_to_syntax";
|
|
12
12
|
|
|
13
13
|
export class Container {
|
|
14
|
+
id;
|
|
15
|
+
options;
|
|
16
|
+
_bindingDictionary;
|
|
17
|
+
_metadataReader;
|
|
14
18
|
constructor(containerOptions) {
|
|
15
19
|
const options = containerOptions || {};
|
|
16
20
|
options.defaultScope = options.defaultScope || BindingScopeEnum.Transient, this.options = options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/container.ts"],"names":[],"mappings":"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","file":"container.js","sourcesContent":["import { Generator } from '../generator';\nimport { Binding } from './binding';\nimport type { interfaces } from './interfaces';\nimport { BindingScopeEnum, BindingTypeEnum } from './literal_types';\nimport { Metadata } from './meta-data';\nimport { INJECT_TAG, MULTI_INJECT_TAG, NAMED_TAG } from './metadata_keys';\nimport { MetadataReader } from './metadata_reader';\nimport { BindingToSyntax } from './syntax/binding_to_syntax';\n\ninterface IChildRequest {\n injectIdentifier: any;\n metadata: interfaces.Metadata<unknown>[];\n bindings: Binding<unknown>[];\n}\n\ninterface GetArgs<T> {\n avoidConstraints: boolean;\n isMultiInject: boolean;\n serviceIdentifier: interfaces.ServiceIdentifier<T>;\n key: string | symbol;\n value: any;\n}\n\nexport class Container {\n id: number;\n readonly options: interfaces.ContainerOptions;\n private _bindingDictionary: Map<any, Binding<unknown>[]>;\n private _metadataReader: interfaces.MetadataReader;\n\n constructor(containerOptions?: interfaces.ContainerOptions) {\n const options = containerOptions || {};\n options.defaultScope = options.defaultScope || BindingScopeEnum.Transient;\n // console.log(this);\n this.options = options;\n this.id = Generator.GenAutoIncrementId();\n this._bindingDictionary = new Map();\n this._metadataReader = new MetadataReader();\n }\n\n load(module: interfaces.ContainerModule) {\n const getHelpers = this._getContainerModuleHelpersFactory();\n\n const containerModuleHelpers = getHelpers(module.id);\n\n module.registry(\n containerModuleHelpers.bindFunction as interfaces.Bind,\n containerModuleHelpers.unbindFunction,\n containerModuleHelpers.isboundFunction,\n containerModuleHelpers.rebindFunction as interfaces.Rebind\n );\n }\n\n get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n\n return this._get<T>(getArgs) as T;\n }\n\n getAll<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T[] {\n const getArgs = this._getAllArgs(serviceIdentifier);\n\n return this._get<T>(getArgs) as T[];\n }\n\n getTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n return this._get<T>(getArgs) as T;\n }\n\n getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T {\n return this.getTagged<T>(serviceIdentifier, NAMED_TAG, named);\n }\n\n isBound(serviceIdentifier: interfaces.ServiceIdentifier<unknown>): boolean {\n return this._bindingDictionary.has(serviceIdentifier);\n }\n\n // Registers a type binding\n bind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n const scope = this.options.defaultScope;\n const binding = new Binding<T>(serviceIdentifier, scope);\n const list = this._bindingDictionary.get(serviceIdentifier) || [];\n list.push(binding);\n this._bindingDictionary.set(serviceIdentifier, list);\n return new BindingToSyntax<T>(binding);\n }\n\n unbind(serviceIdentifier: interfaces.ServiceIdentifier): void {\n this._bindingDictionary.delete(serviceIdentifier);\n }\n\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n }\n\n private _getContainerModuleHelpersFactory() {\n const setModuleId = (\n bindingToSyntax: interfaces.BindingToSyntax<unknown>,\n moduleId: interfaces.ContainerModuleBase['id']\n ) => {\n // TODO: Implement an internal type `_BindingToSyntax<T>` wherein this member\n // can be public. Let `BindingToSyntax<T>` be the presentational type that\n // depends on it, and does not expose this member as public.\n (\n bindingToSyntax as unknown as { _binding: { moduleId: interfaces.ContainerModuleBase['id'] } }\n )._binding.moduleId = moduleId;\n };\n\n const getBindFunction =\n <T>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n const getUnbindFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.unbind(serviceIdentifier);\n };\n\n const getUnbindAsyncFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return null as any;\n // return this.unbindAsync(serviceIdentifier);\n };\n\n const getIsboundFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.isBound(serviceIdentifier);\n };\n\n const getRebindFunction =\n <T = unknown>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n return (mId: interfaces.ContainerModuleBase['id']) => ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(),\n unbindAsyncFunction: getUnbindAsyncFunction()\n });\n }\n\n private _getNotAllArgs<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n isMultiInject: boolean,\n key?: string | number | symbol | undefined,\n value?: unknown\n ): any {\n return {\n avoidConstraints: false,\n isMultiInject,\n serviceIdentifier,\n key,\n value\n };\n }\n\n private _getAllArgs<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): any {\n return {\n avoidConstraints: true,\n isMultiInject: true,\n serviceIdentifier\n };\n }\n\n private _get<T>(getArgs: GetArgs<T>): T | T[] {\n const result: T[] = [];\n const bindings = this._bindingDictionary.get(getArgs.serviceIdentifier).filter(b => {\n return b.constraint(getArgs as any);\n }) as Binding<T>[];\n bindings.forEach(binding => {\n result.push(this._resolveFromBinding<T>(binding));\n });\n\n return !getArgs.isMultiInject && result.length === 1 ? result[0] : result;\n }\n\n private _getChildRequest(binding: Binding<unknown>) {\n const constr = binding.implementationType;\n const { userGeneratedMetadata } = this._metadataReader.getConstructorMetadata(constr as any);\n const keys = Object.keys(userGeneratedMetadata);\n const arr = [];\n for (let i = 0; i < keys.length; i++) {\n const constructorArgsMetadata = userGeneratedMetadata[i];\n const targetMetadataMap = {};\n constructorArgsMetadata.forEach(md => {\n targetMetadataMap[md.key] = md.value;\n });\n const metadata = {\n inject: targetMetadataMap[INJECT_TAG],\n multiInject: targetMetadataMap[MULTI_INJECT_TAG]\n };\n const injectIdentifier = metadata.inject || metadata.multiInject;\n const target = {\n serviceIdentifier: injectIdentifier,\n constructorArgsMetadata\n };\n const bindings = this._bindingDictionary.get(injectIdentifier).filter(b => {\n return b.constraint(target as any);\n });\n const request = {\n injectIdentifier,\n metadata: constructorArgsMetadata,\n bindings\n };\n\n arr.push(request);\n }\n\n return arr;\n }\n\n private _resolveFromBinding<T>(binding: Binding<T>): T {\n const result = this._getResolvedFromBinding<T>(binding);\n\n this._saveToScope(binding, result);\n\n return result;\n }\n\n private _getResolvedFromBinding<T>(binding: Binding<T>) {\n let result: T;\n switch (binding.type) {\n case BindingTypeEnum.ConstantValue:\n case BindingTypeEnum.Function:\n result = binding.cache as T;\n break;\n case BindingTypeEnum.Instance:\n result = this._resolveInstance<T>(binding, binding.implementationType as interfaces.Newable<T>);\n break;\n default:\n result = binding.dynamicValue({ container: this } as any);\n }\n\n return result;\n }\n\n private _resolveInstance<T>(binding: Binding<T>, constr: interfaces.Newable<T>): T {\n if (binding.activated) {\n return binding.cache;\n }\n\n const childRequests = this._getChildRequest(binding);\n return this._createInstance(constr, childRequests);\n }\n\n private _createInstance<T>(constr: interfaces.Newable<T>, childRequests: IChildRequest[]) {\n if (childRequests.length) {\n const resolved = this._resolveRequests(childRequests);\n const obj = new constr(...resolved);\n return obj;\n }\n const obj = new constr();\n return obj;\n }\n\n private _resolveRequests(childRequests: IChildRequest[]): any[] {\n return childRequests.map(request => {\n return request.bindings.length > 1\n ? request.bindings.map(binding => this._resolveFromBinding(binding))\n : this._resolveFromBinding(request.bindings[0]);\n });\n }\n\n private _saveToScope(binding: Binding<unknown>, result: any) {\n if (binding.scope === BindingScopeEnum.Singleton) {\n binding.cache = result;\n binding.activated = true;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/container.ts"],"names":[],"mappings":"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","file":"container.js","sourcesContent":["import { Generator } from '../generator';\nimport { Binding } from './binding';\nimport type { interfaces } from './interfaces';\nimport { BindingScopeEnum, BindingTypeEnum } from './literal_types';\nimport { Metadata } from './meta-data';\nimport { INJECT_TAG, MULTI_INJECT_TAG, NAMED_TAG } from './metadata_keys';\nimport { MetadataReader } from './metadata_reader';\nimport { BindingToSyntax } from './syntax/binding_to_syntax';\n\ninterface IChildRequest {\n injectIdentifier: any;\n metadata: interfaces.Metadata<unknown>[];\n bindings: Binding<unknown>[];\n}\n\ninterface GetArgs<T> {\n avoidConstraints: boolean;\n isMultiInject: boolean;\n serviceIdentifier: interfaces.ServiceIdentifier<T>;\n key: string | symbol;\n value: any;\n}\n\nexport class Container {\n id: number;\n readonly options: interfaces.ContainerOptions;\n private _bindingDictionary: Map<any, Binding<unknown>[]>;\n private _metadataReader: interfaces.MetadataReader;\n\n constructor(containerOptions?: interfaces.ContainerOptions) {\n const options = containerOptions || {};\n options.defaultScope = options.defaultScope || BindingScopeEnum.Transient;\n // console.log(this);\n this.options = options;\n this.id = Generator.GenAutoIncrementId();\n this._bindingDictionary = new Map();\n this._metadataReader = new MetadataReader();\n }\n\n load(module: interfaces.ContainerModule) {\n const getHelpers = this._getContainerModuleHelpersFactory();\n\n const containerModuleHelpers = getHelpers(module.id);\n\n module.registry(\n containerModuleHelpers.bindFunction as interfaces.Bind,\n containerModuleHelpers.unbindFunction,\n containerModuleHelpers.isboundFunction,\n containerModuleHelpers.rebindFunction as interfaces.Rebind\n );\n }\n\n get<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false);\n\n return this._get<T>(getArgs) as T;\n }\n\n getAll<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): T[] {\n const getArgs = this._getAllArgs(serviceIdentifier);\n\n return this._get<T>(getArgs) as T[];\n }\n\n getTagged<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, key: string | number | symbol, value: unknown): T {\n const getArgs = this._getNotAllArgs(serviceIdentifier, false, key, value);\n\n return this._get<T>(getArgs) as T;\n }\n\n getNamed<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>, named: string | number | symbol): T {\n return this.getTagged<T>(serviceIdentifier, NAMED_TAG, named);\n }\n\n isBound(serviceIdentifier: interfaces.ServiceIdentifier<unknown>): boolean {\n return this._bindingDictionary.has(serviceIdentifier);\n }\n\n // Registers a type binding\n bind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n const scope = this.options.defaultScope;\n const binding = new Binding<T>(serviceIdentifier, scope);\n const list = this._bindingDictionary.get(serviceIdentifier) || [];\n list.push(binding);\n this._bindingDictionary.set(serviceIdentifier, list);\n return new BindingToSyntax<T>(binding);\n }\n\n unbind(serviceIdentifier: interfaces.ServiceIdentifier): void {\n this._bindingDictionary.delete(serviceIdentifier);\n }\n\n rebind<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): interfaces.BindingToSyntax<T> {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n }\n\n private _getContainerModuleHelpersFactory() {\n const setModuleId = (\n bindingToSyntax: interfaces.BindingToSyntax<unknown>,\n moduleId: interfaces.ContainerModuleBase['id']\n ) => {\n // TODO: Implement an internal type `_BindingToSyntax<T>` wherein this member\n // can be public. Let `BindingToSyntax<T>` be the presentational type that\n // depends on it, and does not expose this member as public.\n (\n bindingToSyntax as unknown as { _binding: { moduleId: interfaces.ContainerModuleBase['id'] } }\n )._binding.moduleId = moduleId;\n };\n\n const getBindFunction =\n <T>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n\n const getUnbindFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.unbind(serviceIdentifier);\n };\n\n const getUnbindAsyncFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return null as any;\n // return this.unbindAsync(serviceIdentifier);\n };\n\n const getIsboundFunction = () => (serviceIdentifier: interfaces.ServiceIdentifier) => {\n return this.isBound(serviceIdentifier);\n };\n\n const getRebindFunction =\n <T = unknown>(moduleId: interfaces.ContainerModuleBase['id']) =>\n (serviceIdentifier: interfaces.ServiceIdentifier) => {\n const bindingToSyntax = this.rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax as BindingToSyntax<T>;\n };\n return (mId: interfaces.ContainerModuleBase['id']) => ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(),\n unbindAsyncFunction: getUnbindAsyncFunction()\n });\n }\n\n private _getNotAllArgs<T>(\n serviceIdentifier: interfaces.ServiceIdentifier<T>,\n isMultiInject: boolean,\n key?: string | number | symbol | undefined,\n value?: unknown\n ): any {\n return {\n avoidConstraints: false,\n isMultiInject,\n serviceIdentifier,\n key,\n value\n };\n }\n\n private _getAllArgs<T>(serviceIdentifier: interfaces.ServiceIdentifier<T>): any {\n return {\n avoidConstraints: true,\n isMultiInject: true,\n serviceIdentifier\n };\n }\n\n private _get<T>(getArgs: GetArgs<T>): T | T[] {\n const result: T[] = [];\n const bindings = this._bindingDictionary.get(getArgs.serviceIdentifier).filter(b => {\n return b.constraint(getArgs as any);\n }) as Binding<T>[];\n bindings.forEach(binding => {\n result.push(this._resolveFromBinding<T>(binding));\n });\n\n return !getArgs.isMultiInject && result.length === 1 ? result[0] : result;\n }\n\n private _getChildRequest(binding: Binding<unknown>) {\n const constr = binding.implementationType;\n const { userGeneratedMetadata } = this._metadataReader.getConstructorMetadata(constr as any);\n const keys = Object.keys(userGeneratedMetadata);\n const arr = [];\n for (let i = 0; i < keys.length; i++) {\n const constructorArgsMetadata = userGeneratedMetadata[i];\n const targetMetadataMap = {};\n constructorArgsMetadata.forEach(md => {\n targetMetadataMap[md.key] = md.value;\n });\n const metadata = {\n inject: targetMetadataMap[INJECT_TAG],\n multiInject: targetMetadataMap[MULTI_INJECT_TAG]\n };\n const injectIdentifier = metadata.inject || metadata.multiInject;\n const target = {\n serviceIdentifier: injectIdentifier,\n constructorArgsMetadata\n };\n const bindings = this._bindingDictionary.get(injectIdentifier).filter(b => {\n return b.constraint(target as any);\n });\n const request = {\n injectIdentifier,\n metadata: constructorArgsMetadata,\n bindings\n };\n\n arr.push(request);\n }\n\n return arr;\n }\n\n private _resolveFromBinding<T>(binding: Binding<T>): T {\n const result = this._getResolvedFromBinding<T>(binding);\n\n this._saveToScope(binding, result);\n\n return result;\n }\n\n private _getResolvedFromBinding<T>(binding: Binding<T>) {\n let result: T;\n switch (binding.type) {\n case BindingTypeEnum.ConstantValue:\n case BindingTypeEnum.Function:\n result = binding.cache as T;\n break;\n case BindingTypeEnum.Instance:\n result = this._resolveInstance<T>(binding, binding.implementationType as interfaces.Newable<T>);\n break;\n default:\n result = binding.dynamicValue({ container: this } as any);\n }\n\n return result;\n }\n\n private _resolveInstance<T>(binding: Binding<T>, constr: interfaces.Newable<T>): T {\n if (binding.activated) {\n return binding.cache;\n }\n\n const childRequests = this._getChildRequest(binding);\n return this._createInstance(constr, childRequests);\n }\n\n private _createInstance<T>(constr: interfaces.Newable<T>, childRequests: IChildRequest[]) {\n if (childRequests.length) {\n const resolved = this._resolveRequests(childRequests);\n const obj = new constr(...resolved);\n return obj;\n }\n const obj = new constr();\n return obj;\n }\n\n private _resolveRequests(childRequests: IChildRequest[]): any[] {\n return childRequests.map(request => {\n return request.bindings.length > 1\n ? request.bindings.map(binding => this._resolveFromBinding(binding))\n : this._resolveFromBinding(request.bindings[0]);\n });\n }\n\n private _saveToScope(binding: Binding<unknown>, result: any) {\n if (binding.scope === BindingScopeEnum.Singleton) {\n binding.cache = result;\n binding.activated = true;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/cotainer-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/cotainer-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,OAAO,eAAe;IAC1B,EAAE,CAAS;IACX,QAAQ,CAAqC;IAE7C,YAAY,QAA4C;QACtD,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF","file":"cotainer-module.js","sourcesContent":["import { Generator } from '../generator';\nimport type { interfaces } from '../inversify-lite';\n\nexport class ContainerModule {\n id: number;\n registry: interfaces.ContainerModuleCallBack;\n\n constructor(registry: interfaces.ContainerModuleCallBack) {\n this.id = Generator.GenAutoIncrementId();\n this.registry = registry;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/inversify/meta-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,QAAQ;
|
|
1
|
+
{"version":3,"sources":["../src/common/inversify/meta-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,QAAQ;IACnB,GAAG,CAA2B;IAC9B,KAAK,CAAU;IAEf,YAAY,GAA6B,EAAE,KAAc;QACvD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAC1B,OAAO,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC;SACnD;QACD,OAAO,iBAAiB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAChF,CAAC;CACF","file":"meta-data.js","sourcesContent":["import { NAMED_TAG } from './metadata_keys';\n\nexport class Metadata {\n key: string | number | symbol;\n value: unknown;\n\n constructor(key: string | number | symbol, value: unknown) {\n this.key = key;\n this.value = value;\n }\n\n toString() {\n if (this.key === NAMED_TAG) {\n return `named: ${String(this.value).toString()} `;\n }\n return `tagged: { key:${this.key.toString()}, value: ${String(this.value)} }`;\n }\n}\n"]}
|