@visactor/vstory 0.0.5 → 0.0.6
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/README.md +13 -0
- package/cjs/constants/character.d.ts +2 -1
- package/cjs/constants/character.js +1 -1
- package/cjs/constants/character.js.map +1 -1
- package/cjs/dsl/types/index.d.ts +1 -0
- package/cjs/dsl/types/index.js.map +1 -1
- package/cjs/dsl/utils/datum.js +2 -1
- package/cjs/dsl/utils/flicker.js +1 -2
- package/cjs/edit/const.d.ts +1 -3
- package/cjs/edit/const.js +1 -0
- package/cjs/edit/const.js.map +1 -1
- package/cjs/edit/edit-action.d.ts +9 -0
- package/cjs/edit/edit-action.js +61 -5
- package/cjs/edit/edit-action.js.map +1 -1
- package/cjs/edit/edit-component/base-selection.d.ts +8 -3
- package/cjs/edit/edit-component/base-selection.js +31 -5
- package/cjs/edit/edit-component/base-selection.js.map +1 -1
- package/cjs/edit/edit-component/box-selection.js +1 -1
- package/cjs/edit/edit-component/chart-selection.d.ts +15 -0
- package/cjs/edit/edit-component/chart-selection.js +39 -0
- package/cjs/edit/edit-component/chart-selection.js.map +1 -0
- package/cjs/edit/edit-component/common.d.ts +1 -11
- package/cjs/edit/edit-component/common.js +1 -30
- package/cjs/edit/edit-component/common.js.map +1 -1
- package/cjs/edit/edit-component/edit-control/richtext-control.d.ts +19 -0
- package/cjs/edit/edit-component/edit-control/richtext-control.js +34 -0
- package/cjs/edit/edit-component/edit-control/richtext-control.js.map +1 -0
- package/cjs/edit/edit-component/edit-control/richtext-transform-control.d.ts +2 -3
- package/cjs/edit/edit-component/edit-control/richtext-transform-control.js +30 -32
- package/cjs/edit/edit-component/edit-control/richtext-transform-control.js.map +1 -1
- package/cjs/edit/edit-component/edit-control/transform-control.d.ts +4 -2
- package/cjs/edit/edit-component/edit-control/transform-control.js +10 -6
- package/cjs/edit/edit-component/edit-control/transform-control.js.map +1 -1
- package/cjs/edit/edit-component/edit-control/transform-drag.d.ts +1 -0
- package/cjs/edit/edit-component/edit-control/transform-drag.js +4 -2
- package/cjs/edit/edit-component/edit-control/transform-drag.js.map +1 -1
- package/cjs/edit/edit-component/image-selection.d.ts +1 -2
- package/cjs/edit/edit-component/image-selection.js +3 -6
- package/cjs/edit/edit-component/image-selection.js.map +1 -1
- package/cjs/edit/edit-component/index.js +4 -5
- package/cjs/edit/edit-component/index.js.map +1 -1
- package/cjs/edit/edit-component/mixin/richtext.d.ts +21 -0
- package/cjs/edit/edit-component/mixin/richtext.js +26 -0
- package/cjs/edit/edit-component/mixin/richtext.js.map +1 -0
- package/cjs/edit/edit-component/rect-selection.d.ts +8 -12
- package/cjs/edit/edit-component/rect-selection.js +12 -17
- package/cjs/edit/edit-component/rect-selection.js.map +1 -1
- package/cjs/edit/edit-component/richtext-selection-common.d.ts +19 -0
- package/cjs/edit/edit-component/richtext-selection-common.js +35 -0
- package/cjs/edit/edit-component/richtext-selection-common.js.map +1 -0
- package/cjs/edit/edit-component/richtext-selection.d.ts +0 -2
- package/cjs/edit/edit-component/richtext-selection.js +0 -6
- package/cjs/edit/edit-component/richtext-selection.js.map +1 -1
- package/cjs/edit/edit-component/shape-selection.d.ts +11 -0
- package/cjs/edit/edit-component/shape-selection.js +36 -0
- package/cjs/edit/edit-component/shape-selection.js.map +1 -0
- package/cjs/edit/edit-component/text-selection.d.ts +0 -3
- package/cjs/edit/edit-component/text-selection.js +2 -9
- package/cjs/edit/edit-component/text-selection.js.map +1 -1
- package/cjs/edit/edit.d.ts +5 -2
- package/cjs/edit/edit.js +20 -5
- package/cjs/edit/edit.js.map +1 -1
- package/cjs/edit/interface.d.ts +6 -1
- package/cjs/edit/interface.js +3 -1
- package/cjs/edit/interface.js.map +1 -1
- package/cjs/index.d.ts +3 -0
- package/cjs/index.js +3 -1
- package/cjs/index.js.map +1 -1
- package/cjs/player/interface/player.js +1 -1
- package/cjs/player/interface/scheduler.js +1 -1
- package/cjs/player/player.js +6 -2
- package/cjs/player/player.js.map +1 -1
- package/cjs/player/processor/chart/common/chartAppear.d.ts +2 -2
- package/cjs/player/processor/chart/common/chartAppear.js.map +1 -1
- package/cjs/player/processor/chart/common/commonAppear.d.ts +3 -3
- package/cjs/player/processor/chart/common/commonAppear.js.map +1 -1
- package/cjs/player/processor/chart/component/axisAppear.d.ts +2 -2
- package/cjs/player/processor/chart/component/axisAppear.js.map +1 -1
- package/cjs/player/processor/chart/component/commonAppear.d.ts +3 -3
- package/cjs/player/processor/chart/component/commonAppear.js.map +1 -1
- package/cjs/player/processor/chart/component/labelAppear.d.ts +2 -2
- package/cjs/player/processor/chart/component/labelAppear.js.map +1 -1
- package/cjs/player/processor/chart/rankingBar/rankingBar.d.ts +29 -0
- package/cjs/player/processor/chart/rankingBar/rankingBar.js +54 -0
- package/cjs/player/processor/chart/rankingBar/rankingBar.js.map +1 -0
- package/cjs/player/processor/chart/seriesmark/commonTransformMarkAppear.d.ts +3 -3
- package/cjs/player/processor/chart/seriesmark/commonTransformMarkAppear.js.map +1 -1
- package/cjs/player/processor/chart/seriesmark/transformArcVisibility.d.ts +2 -2
- package/cjs/player/processor/chart/seriesmark/transformArcVisibility.js.map +1 -1
- package/cjs/player/processor/chart/seriesmark/transformLineVisibility.d.ts +2 -2
- package/cjs/player/processor/chart/seriesmark/transformLineVisibility.js.map +1 -1
- package/cjs/player/processor/chart/seriesmark/transformRectVisibility.d.ts +2 -2
- package/cjs/player/processor/chart/seriesmark/transformRectVisibility.js.map +1 -1
- package/cjs/player/processor/chart/seriesmark/transformSymbolVisibility.d.ts +2 -2
- package/cjs/player/processor/chart/seriesmark/transformSymbolVisibility.js.map +1 -1
- package/cjs/player/processor/chart/seriesmark/transformTextVisibility.d.ts +2 -2
- package/cjs/player/processor/chart/seriesmark/transformTextVisibility.js.map +1 -1
- package/cjs/player/processor/chart/vchart.d.ts +35 -24
- package/cjs/player/processor/chart/vchart.js +88 -60
- package/cjs/player/processor/chart/vchart.js.map +1 -1
- package/cjs/player/processor/common/bounce-processor.js +2 -3
- package/cjs/player/processor/common/bounce-processor.js.map +1 -1
- package/cjs/player/processor/common-processor.js +0 -2
- package/cjs/player/processor/component/common-component.js +21 -21
- package/cjs/player/processor/component/common-component.js.map +1 -1
- package/cjs/player/processor/interface/action-processor.d.ts +1 -1
- package/cjs/player/processor/interface/action-processor.js.map +1 -1
- package/cjs/player/processor/interface/common-action.d.ts +3 -2
- package/cjs/player/processor/interface/common-action.js.map +1 -1
- package/cjs/player/processor/interface/style-action.d.ts +4 -5
- package/cjs/player/processor/interface/style-action.js.map +1 -1
- package/cjs/player/processor/processor-item.js +1 -1
- package/cjs/player/processor/processor.js +1 -1
- package/cjs/player/processor/processor.js.map +1 -1
- package/cjs/player/processor/processorMap.d.ts +9 -0
- package/cjs/player/processor/processorMap.js +7 -1
- package/cjs/player/processor/processorMap.js.map +1 -1
- package/cjs/player/scheduler.js +12 -8
- package/cjs/player/scheduler.js.map +1 -1
- package/cjs/story/canvas/canvas.js +3 -4
- package/cjs/story/canvas/canvas.js.map +1 -1
- package/cjs/story/character/base/base.d.ts +4 -0
- package/cjs/story/character/base/base.js +1 -1
- package/cjs/story/character/base/base.js.map +1 -1
- package/cjs/story/character/chart/character.d.ts +15 -0
- package/cjs/story/character/chart/character.js +55 -19
- package/cjs/story/character/chart/character.js.map +1 -1
- package/cjs/story/character/chart/characters/rankingBar.d.ts +4 -0
- package/cjs/story/character/chart/characters/rankingBar.js +15 -0
- package/cjs/story/character/chart/characters/rankingBar.js.map +1 -0
- package/cjs/story/character/chart/graphic/vchart-graphic-picker.js +6 -8
- package/cjs/story/character/chart/graphic/vchart-graphic-picker.js.map +1 -1
- package/cjs/story/character/chart/graphic/vchart-graphic-render.js +6 -6
- package/cjs/story/character/chart/graphic/vchart-graphic-render.js.map +1 -1
- package/cjs/story/character/chart/graphic/vchart-graphic.d.ts +12 -2
- package/cjs/story/character/chart/graphic/vchart-graphic.js +77 -13
- package/cjs/story/character/chart/graphic/vchart-graphic.js.map +1 -1
- package/cjs/story/character/chart/runtime/common-spec.d.ts +2 -4
- package/cjs/story/character/chart/runtime/common-spec.js +0 -2
- package/cjs/story/character/chart/runtime/common-spec.js.map +1 -1
- package/cjs/story/character/chart/runtime/component-spec.d.ts +4 -3
- package/cjs/story/character/chart/runtime/component-spec.js +7 -5
- package/cjs/story/character/chart/runtime/component-spec.js.map +1 -1
- package/cjs/story/character/chart/temp/constant.d.ts +1 -0
- package/cjs/story/character/chart/temp/constant.js +2 -1
- package/cjs/story/character/chart/temp/constant.js.map +1 -1
- package/cjs/story/character/chart/temp/templates/bar.d.ts +20 -0
- package/cjs/story/character/chart/temp/templates/bar.js +31 -0
- package/cjs/story/character/chart/temp/templates/bar.js.map +1 -0
- package/cjs/story/character/chart/temp/templates/base-temp.d.ts +6 -4
- package/cjs/story/character/chart/temp/templates/base-temp.js +1 -1
- package/cjs/story/character/chart/temp/templates/base-temp.js.map +1 -1
- package/cjs/story/character/chart/temp/templates/ranking-bar-temp.d.ts +8 -0
- package/cjs/story/character/chart/temp/templates/ranking-bar-temp.js +22 -0
- package/cjs/story/character/chart/temp/templates/ranking-bar-temp.js.map +1 -0
- package/cjs/story/character/component/character-group/component-group-graphic-render.d.ts +2 -2
- package/cjs/story/character/component/character-group/component-group-graphic-render.js +3 -3
- package/cjs/story/character/component/character-group/component-group-graphic-render.js.map +1 -1
- package/cjs/story/character/component/character-group/component-group-graphic.d.ts +1 -1
- package/cjs/story/character/component/character-group/component-group-graphic.js +6 -4
- package/cjs/story/character/component/character-group/component-group-graphic.js.map +1 -1
- package/cjs/story/character/component/character.d.ts +5 -1
- package/cjs/story/character/component/character.js +18 -1
- package/cjs/story/character/component/character.js.map +1 -1
- package/cjs/story/character/component/characters/character-image.d.ts +3 -0
- package/cjs/story/character/component/characters/character-image.js +4 -0
- package/cjs/story/character/component/characters/character-image.js.map +1 -1
- package/cjs/story/character/component/characters/character-rect.d.ts +3 -0
- package/cjs/story/character/component/characters/character-rect.js +4 -0
- package/cjs/story/character/component/characters/character-rect.js.map +1 -1
- package/cjs/story/character/component/characters/character-shape.d.ts +4 -0
- package/cjs/story/character/component/characters/character-shape.js +15 -0
- package/cjs/story/character/component/characters/character-shape.js.map +1 -1
- package/cjs/story/character/component/graphic/graphic-base-text.d.ts +2 -1
- package/cjs/story/character/component/graphic/graphic-base-text.js +7 -2
- package/cjs/story/character/component/graphic/graphic-base-text.js.map +1 -1
- package/cjs/story/character/component/graphic/symbol.d.ts +3 -0
- package/cjs/story/character/component/graphic/symbol.js +17 -3
- package/cjs/story/character/component/graphic/symbol.js.map +1 -1
- package/cjs/story/character/dsl-interface.d.ts +2 -0
- package/cjs/story/character/dsl-interface.js.map +1 -1
- package/cjs/story/character/runtime-interface.d.ts +9 -4
- package/cjs/story/character/runtime-interface.js.map +1 -1
- package/cjs/story/character/visactor/character.d.ts +15 -0
- package/cjs/story/character/visactor/character.js +17 -1
- package/cjs/story/character/visactor/character.js.map +1 -1
- package/cjs/story/character/visactor/interface.js.map +1 -1
- package/cjs/story/index.js +5 -2
- package/cjs/story/index.js.map +1 -1
- package/cjs/story/interface/dsl-interface.d.ts +3 -2
- package/cjs/story/interface/dsl-interface.js.map +1 -1
- package/cjs/story/interface/runtime-interface.d.ts +2 -0
- package/cjs/story/interface/runtime-interface.js.map +1 -1
- package/cjs/story/story.js +3 -2
- package/cjs/story/story.js.map +1 -1
- package/cjs/story/utils/layout.d.ts +2 -1
- package/cjs/story/utils/layout.js +2 -2
- package/cjs/story/utils/layout.js.map +1 -1
- package/cjs/story/utils/vchart-pick.d.ts +115 -0
- package/cjs/story/utils/vchart-pick.js +109 -0
- package/cjs/story/utils/vchart-pick.js.map +1 -0
- package/dist/index.js +27003 -87350
- package/dist/index.min.js +3 -3
- package/es/constants/character.d.ts +2 -1
- package/es/constants/character.js +1 -1
- package/es/constants/character.js.map +1 -1
- package/es/dsl/types/index.d.ts +1 -0
- package/es/dsl/types/index.js.map +1 -1
- package/es/dsl/utils/datum.js +2 -1
- package/es/dsl/utils/flicker.js +1 -2
- package/es/edit/const.d.ts +1 -3
- package/es/edit/const.js +1 -0
- package/es/edit/const.js.map +1 -1
- package/es/edit/edit-action.d.ts +9 -0
- package/es/edit/edit-action.js +63 -5
- package/es/edit/edit-action.js.map +1 -1
- package/es/edit/edit-component/base-selection.d.ts +8 -3
- package/es/edit/edit-component/base-selection.js +32 -4
- package/es/edit/edit-component/base-selection.js.map +1 -1
- package/es/edit/edit-component/box-selection.js +1 -1
- package/es/edit/edit-component/chart-selection.d.ts +15 -0
- package/es/edit/edit-component/chart-selection.js +31 -0
- package/es/edit/edit-component/chart-selection.js.map +1 -0
- package/es/edit/edit-component/common.d.ts +1 -11
- package/es/edit/edit-component/common.js +1 -24
- package/es/edit/edit-component/common.js.map +1 -1
- package/es/edit/edit-component/edit-control/richtext-control.d.ts +19 -0
- package/es/edit/edit-component/edit-control/richtext-control.js +28 -0
- package/es/edit/edit-component/edit-control/richtext-control.js.map +1 -0
- package/es/edit/edit-component/edit-control/richtext-transform-control.d.ts +2 -3
- package/es/edit/edit-component/edit-control/richtext-transform-control.js +29 -34
- package/es/edit/edit-component/edit-control/richtext-transform-control.js.map +1 -1
- package/es/edit/edit-component/edit-control/transform-control.d.ts +4 -2
- package/es/edit/edit-component/edit-control/transform-control.js +10 -6
- package/es/edit/edit-component/edit-control/transform-control.js.map +1 -1
- package/es/edit/edit-component/edit-control/transform-drag.d.ts +1 -0
- package/es/edit/edit-component/edit-control/transform-drag.js +4 -2
- package/es/edit/edit-component/edit-control/transform-drag.js.map +1 -1
- package/es/edit/edit-component/image-selection.d.ts +1 -2
- package/es/edit/edit-component/image-selection.js +3 -6
- package/es/edit/edit-component/image-selection.js.map +1 -1
- package/es/edit/edit-component/index.js +7 -9
- package/es/edit/edit-component/index.js.map +1 -1
- package/es/edit/edit-component/mixin/richtext.d.ts +21 -0
- package/es/edit/edit-component/mixin/richtext.js +18 -0
- package/es/edit/edit-component/mixin/richtext.js.map +1 -0
- package/es/edit/edit-component/rect-selection.d.ts +8 -12
- package/es/edit/edit-component/rect-selection.js +13 -20
- package/es/edit/edit-component/rect-selection.js.map +1 -1
- package/es/edit/edit-component/richtext-selection-common.d.ts +19 -0
- package/es/edit/edit-component/richtext-selection-common.js +33 -0
- package/es/edit/edit-component/richtext-selection-common.js.map +1 -0
- package/es/edit/edit-component/richtext-selection.d.ts +0 -2
- package/es/edit/edit-component/richtext-selection.js +0 -6
- package/es/edit/edit-component/richtext-selection.js.map +1 -1
- package/es/edit/edit-component/shape-selection.d.ts +11 -0
- package/es/edit/edit-component/shape-selection.js +30 -0
- package/es/edit/edit-component/shape-selection.js.map +1 -0
- package/es/edit/edit-component/text-selection.d.ts +0 -3
- package/es/edit/edit-component/text-selection.js +1 -10
- package/es/edit/edit-component/text-selection.js.map +1 -1
- package/es/edit/edit.d.ts +5 -2
- package/es/edit/edit.js +21 -4
- package/es/edit/edit.js.map +1 -1
- package/es/edit/interface.d.ts +6 -1
- package/es/edit/interface.js +3 -1
- package/es/edit/interface.js.map +1 -1
- package/es/index.d.ts +3 -0
- package/es/index.js +7 -1
- package/es/index.js.map +1 -1
- package/es/player/interface/player.js +1 -1
- package/es/player/interface/scheduler.js +1 -1
- package/es/player/player.js +6 -2
- package/es/player/player.js.map +1 -1
- package/es/player/processor/chart/common/chartAppear.d.ts +2 -2
- package/es/player/processor/chart/common/chartAppear.js.map +1 -1
- package/es/player/processor/chart/common/commonAppear.d.ts +3 -3
- package/es/player/processor/chart/common/commonAppear.js.map +1 -1
- package/es/player/processor/chart/component/axisAppear.d.ts +2 -2
- package/es/player/processor/chart/component/axisAppear.js.map +1 -1
- package/es/player/processor/chart/component/commonAppear.d.ts +3 -3
- package/es/player/processor/chart/component/commonAppear.js.map +1 -1
- package/es/player/processor/chart/component/labelAppear.d.ts +2 -2
- package/es/player/processor/chart/component/labelAppear.js.map +1 -1
- package/es/player/processor/chart/rankingBar/rankingBar.d.ts +29 -0
- package/es/player/processor/chart/rankingBar/rankingBar.js +50 -0
- package/es/player/processor/chart/rankingBar/rankingBar.js.map +1 -0
- package/es/player/processor/chart/seriesmark/commonTransformMarkAppear.d.ts +3 -3
- package/es/player/processor/chart/seriesmark/commonTransformMarkAppear.js.map +1 -1
- package/es/player/processor/chart/seriesmark/transformArcVisibility.d.ts +2 -2
- package/es/player/processor/chart/seriesmark/transformArcVisibility.js.map +1 -1
- package/es/player/processor/chart/seriesmark/transformLineVisibility.d.ts +2 -2
- package/es/player/processor/chart/seriesmark/transformLineVisibility.js.map +1 -1
- package/es/player/processor/chart/seriesmark/transformRectVisibility.d.ts +2 -2
- package/es/player/processor/chart/seriesmark/transformRectVisibility.js.map +1 -1
- package/es/player/processor/chart/seriesmark/transformSymbolVisibility.d.ts +2 -2
- package/es/player/processor/chart/seriesmark/transformSymbolVisibility.js.map +1 -1
- package/es/player/processor/chart/seriesmark/transformTextVisibility.d.ts +2 -2
- package/es/player/processor/chart/seriesmark/transformTextVisibility.js.map +1 -1
- package/es/player/processor/chart/vchart.d.ts +35 -24
- package/es/player/processor/chart/vchart.js +89 -61
- package/es/player/processor/chart/vchart.js.map +1 -1
- package/es/player/processor/common/bounce-processor.js +2 -3
- package/es/player/processor/common/bounce-processor.js.map +1 -1
- package/es/player/processor/common-processor.js +0 -2
- package/es/player/processor/component/common-component.js +21 -21
- package/es/player/processor/component/common-component.js.map +1 -1
- package/es/player/processor/interface/action-processor.d.ts +1 -1
- package/es/player/processor/interface/action-processor.js.map +1 -1
- package/es/player/processor/interface/common-action.d.ts +3 -2
- package/es/player/processor/interface/common-action.js.map +1 -1
- package/es/player/processor/interface/style-action.d.ts +4 -5
- package/es/player/processor/interface/style-action.js.map +1 -1
- package/es/player/processor/processor-item.js +1 -1
- package/es/player/processor/processor.js +1 -1
- package/es/player/processor/processor.js.map +1 -1
- package/es/player/processor/processorMap.d.ts +9 -0
- package/es/player/processor/processorMap.js +8 -0
- package/es/player/processor/processorMap.js.map +1 -1
- package/es/player/scheduler.js +12 -8
- package/es/player/scheduler.js.map +1 -1
- package/es/story/canvas/canvas.js +3 -4
- package/es/story/canvas/canvas.js.map +1 -1
- package/es/story/character/base/base.d.ts +4 -0
- package/es/story/character/base/base.js +1 -1
- package/es/story/character/base/base.js.map +1 -1
- package/es/story/character/chart/character.d.ts +15 -0
- package/es/story/character/chart/character.js +58 -15
- package/es/story/character/chart/character.js.map +1 -1
- package/es/story/character/chart/characters/rankingBar.d.ts +4 -0
- package/es/story/character/chart/characters/rankingBar.js +14 -0
- package/es/story/character/chart/characters/rankingBar.js.map +1 -0
- package/es/story/character/chart/graphic/vchart-graphic-picker.js +6 -8
- package/es/story/character/chart/graphic/vchart-graphic-picker.js.map +1 -1
- package/es/story/character/chart/graphic/vchart-graphic-render.js +7 -7
- package/es/story/character/chart/graphic/vchart-graphic-render.js.map +1 -1
- package/es/story/character/chart/graphic/vchart-graphic.d.ts +12 -2
- package/es/story/character/chart/graphic/vchart-graphic.js +80 -12
- package/es/story/character/chart/graphic/vchart-graphic.js.map +1 -1
- package/es/story/character/chart/runtime/common-spec.d.ts +2 -4
- package/es/story/character/chart/runtime/common-spec.js +0 -2
- package/es/story/character/chart/runtime/common-spec.js.map +1 -1
- package/es/story/character/chart/runtime/component-spec.d.ts +4 -3
- package/es/story/character/chart/runtime/component-spec.js +7 -5
- package/es/story/character/chart/runtime/component-spec.js.map +1 -1
- package/es/story/character/chart/temp/constant.d.ts +1 -0
- package/es/story/character/chart/temp/constant.js +2 -1
- package/es/story/character/chart/temp/constant.js.map +1 -1
- package/es/story/character/chart/temp/templates/bar.d.ts +20 -0
- package/es/story/character/chart/temp/templates/bar.js +27 -0
- package/es/story/character/chart/temp/templates/bar.js.map +1 -0
- package/es/story/character/chart/temp/templates/base-temp.d.ts +6 -4
- package/es/story/character/chart/temp/templates/base-temp.js +1 -1
- package/es/story/character/chart/temp/templates/base-temp.js.map +1 -1
- package/es/story/character/chart/temp/templates/ranking-bar-temp.d.ts +8 -0
- package/es/story/character/chart/temp/templates/ranking-bar-temp.js +18 -0
- package/es/story/character/chart/temp/templates/ranking-bar-temp.js.map +1 -0
- package/es/story/character/component/character-group/component-group-graphic-render.d.ts +2 -2
- package/es/story/character/component/character-group/component-group-graphic-render.js +4 -4
- package/es/story/character/component/character-group/component-group-graphic-render.js.map +1 -1
- package/es/story/character/component/character-group/component-group-graphic.d.ts +1 -1
- package/es/story/character/component/character-group/component-group-graphic.js +5 -3
- package/es/story/character/component/character-group/component-group-graphic.js.map +1 -1
- package/es/story/character/component/character.d.ts +5 -1
- package/es/story/character/component/character.js +18 -1
- package/es/story/character/component/character.js.map +1 -1
- package/es/story/character/component/characters/character-image.d.ts +3 -0
- package/es/story/character/component/characters/character-image.js +4 -0
- package/es/story/character/component/characters/character-image.js.map +1 -1
- package/es/story/character/component/characters/character-rect.d.ts +3 -0
- package/es/story/character/component/characters/character-rect.js +4 -0
- package/es/story/character/component/characters/character-rect.js.map +1 -1
- package/es/story/character/component/characters/character-shape.d.ts +4 -0
- package/es/story/character/component/characters/character-shape.js +15 -0
- package/es/story/character/component/characters/character-shape.js.map +1 -1
- package/es/story/character/component/graphic/graphic-base-text.d.ts +2 -1
- package/es/story/character/component/graphic/graphic-base-text.js +7 -2
- package/es/story/character/component/graphic/graphic-base-text.js.map +1 -1
- package/es/story/character/component/graphic/symbol.d.ts +3 -0
- package/es/story/character/component/graphic/symbol.js +17 -2
- package/es/story/character/component/graphic/symbol.js.map +1 -1
- package/es/story/character/dsl-interface.d.ts +2 -0
- package/es/story/character/dsl-interface.js.map +1 -1
- package/es/story/character/runtime-interface.d.ts +9 -4
- package/es/story/character/runtime-interface.js.map +1 -1
- package/es/story/character/visactor/character.d.ts +15 -0
- package/es/story/character/visactor/character.js +18 -0
- package/es/story/character/visactor/character.js.map +1 -1
- package/es/story/character/visactor/interface.js.map +1 -1
- package/es/story/index.js +7 -3
- package/es/story/index.js.map +1 -1
- package/es/story/interface/dsl-interface.d.ts +3 -2
- package/es/story/interface/dsl-interface.js.map +1 -1
- package/es/story/interface/runtime-interface.d.ts +2 -0
- package/es/story/interface/runtime-interface.js.map +1 -1
- package/es/story/story.js +3 -2
- package/es/story/story.js.map +1 -1
- package/es/story/utils/layout.d.ts +2 -1
- package/es/story/utils/layout.js +2 -2
- package/es/story/utils/layout.js.map +1 -1
- package/es/story/utils/vchart-pick.d.ts +115 -0
- package/es/story/utils/vchart-pick.js +115 -0
- package/es/story/utils/vchart-pick.js.map +1 -0
- package/package.json +11 -10
|
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.RichTextTransformControl = void 0;
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const transform_control_1 = require("./transform-control");
|
|
8
8
|
|
|
9
9
|
class RichTextTransformControl extends transform_control_1.TransformControl {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments), this.handlerDblClick = e => {
|
|
12
|
-
this.
|
|
12
|
+
this.startEditText();
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
initEvent() {
|
|
@@ -18,41 +18,39 @@ class RichTextTransformControl extends transform_control_1.TransformControl {
|
|
|
18
18
|
releaseEvent() {
|
|
19
19
|
super.releaseEvent(), this.rect.removeEventListener("dblclick", this.handlerDblClick);
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
startEditText() {
|
|
22
|
+
this.rect.setAttributes({
|
|
23
|
+
pickable: !1
|
|
24
|
+
}), this.editBorder.setAttributes({
|
|
25
|
+
pickable: !1
|
|
26
|
+
}), this.setAttributes({
|
|
27
|
+
pickable: !1
|
|
28
|
+
});
|
|
29
|
+
const character = this.editComponent.getActiveCharacter();
|
|
30
|
+
if (!character) return;
|
|
31
|
+
const text = character._text && character._text._graphic;
|
|
32
|
+
text && text.setAttributes({
|
|
33
|
+
editable: !0
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
endEditText() {
|
|
37
|
+
this.rect.setAttributes({
|
|
38
|
+
pickable: !0
|
|
39
|
+
}), this.editBorder.setAttributes({
|
|
40
|
+
pickable: !0
|
|
41
|
+
}), this.setAttributes({
|
|
42
|
+
pickable: !0
|
|
43
|
+
});
|
|
33
44
|
const character = this.editComponent.getActiveCharacter(), text = character._text && character._text._graphic;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
textArea.style.alignSelf = "center", textArea.style.width = `${bounds.width()}px`,
|
|
38
|
-
textArea.style.height = `${bounds.height()}px`, textArea.innerText = text.attribute.text,
|
|
39
|
-
textArea.style.border = "none", textArea.style.fontFamily = fontFamily, textArea.style.fontSize = fontSize,
|
|
40
|
-
textArea.style.fontWeight = fontWeight, textArea.style.overflow = "hidden", textArea.style.outline = "none",
|
|
41
|
-
textArea.style.resize = "none", textArea.style.pointerEvents = "all", container.appendChild(textArea);
|
|
42
|
-
}
|
|
45
|
+
text && text.setAttributes({
|
|
46
|
+
editable: !1
|
|
47
|
+
});
|
|
43
48
|
}
|
|
44
49
|
render() {
|
|
45
|
-
|
|
46
|
-
const container = this.domTextEditor, {x: x, y: y, width: width, height: height} = this.rect.attribute;
|
|
47
|
-
container.style.left = x + "px", container.style.top = y + "px", container.style.width = width + "px",
|
|
48
|
-
container.style.height = height + "px";
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
detachDomTextEditor() {
|
|
52
|
-
this.domTextEditor && this.stage && this.stage.window.getContainer().removeChild(this.domTextEditor);
|
|
50
|
+
super.render();
|
|
53
51
|
}
|
|
54
52
|
release() {
|
|
55
|
-
this.
|
|
53
|
+
this.endEditText(), super.release();
|
|
56
54
|
}
|
|
57
55
|
}
|
|
58
56
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/edit/edit-component/edit-control/richtext-transform-control.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/edit/edit-component/edit-control/richtext-transform-control.ts"],"names":[],"mappings":";;;AAwBA,2DAAuD;AAEvD,MAAa,wBAAyB,SAAQ,oCAAgB;IAA9D;;QAaE,oBAAe,GAAG,CAAC,CAAM,EAAE,EAAE;YAE3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC;IAwGJ,CAAC;IAvHC,SAAS;QACP,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY;QACV,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,CAAC;IASD,aAAa;QAEX,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,MAAM,IAAI,GAAI,SAAiB,CAAC,KAAK,IAAK,SAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3E,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAI,SAAiB,CAAC,KAAK,IAAK,SAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3E,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IA2DS,MAAM;QACd,KAAK,CAAC,MAAM,EAAE,CAAC;IASjB,CAAC;IAQD,OAAO;QAEL,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAxHD,4DAwHC","file":"richtext-transform-control.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n ICircleGraphicAttribute,\n IPathGraphicAttribute,\n IGraphic,\n IGroupGraphicAttribute,\n IRect,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n IGroup\n} from '@visactor/vrender';\nimport { createRect, getTheme } from '@visactor/vrender';\nimport type { IAABBBounds, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '@visactor/vrender-components';\nimport { transformPointWithMatrix } from '../../../util/space';\nimport { MinSize } from '../../../constants/attribute';\nimport { normalizeAngle } from '../../../util/math';\nimport { BOUNDS_SELECT_COLOR, DRAG_ANCHOR_COLOR, SHAPE_SELECT_COLOR } from './constants';\nimport type { VRenderPointerEvent } from '../../../interface/type';\nimport type { IEditComponent } from '../../interface';\nimport type { ITransformControl } from './transform-control';\nimport { TransformControl } from './transform-control';\n\nexport class RichTextTransformControl extends TransformControl implements ITransformControl {\n initEvent(): void {\n super.initEvent();\n this.rect.addEventListener('dblclick', this.handlerDblClick);\n }\n\n releaseEvent(): void {\n super.releaseEvent();\n this.rect.removeEventListener('dblclick', this.handlerDblClick);\n }\n\n // domTextEditor?: HTMLElement;\n\n handlerDblClick = (e: any) => {\n // this.attachDomTextEditor();\n this.startEditText();\n };\n\n startEditText() {\n // 关掉上层的pick,开启richtext的editable\n this.rect.setAttributes({ pickable: false });\n this.editBorder.setAttributes({ pickable: false });\n this.setAttributes({ pickable: false });\n const character = this.editComponent.getActiveCharacter();\n if (!character) {\n return;\n }\n const text = (character as any)._text && (character as any)._text._graphic;\n text && text.setAttributes({ editable: true });\n }\n\n endEditText() {\n this.rect.setAttributes({ pickable: true });\n this.editBorder.setAttributes({ pickable: true });\n this.setAttributes({ pickable: true });\n const character = this.editComponent.getActiveCharacter();\n const text = (character as any)._text && (character as any)._text._graphic;\n text && text.setAttributes({ editable: false });\n }\n\n // protected attachDomTextEditor() {\n // const stage = this.stage;\n // if (!stage) {\n // return;\n // }\n // const { x, y, width, height } = this.rect.attribute;\n // const container = document.createElement('div');\n // container.style.position = 'relative';\n // container.style.display = 'flex';\n // container.style.justifyContent = 'center';\n // container.style.left = x + 'px';\n // container.style.top = y + 'px';\n // container.style.width = width + 'px';\n // container.style.height = height + 'px';\n // container.style.pointerEvents = 'none';\n // const bg = document.createElement('div');\n // bg.style.position = 'absolute';\n // bg.style.zIndex = '-1';\n // bg.style.width = '100%';\n // bg.style.height = '100%';\n // bg.style.opacity = '0.2';\n // bg.style.background = BOUNDS_SELECT_COLOR;\n // bg.style.cursor = 'text';\n // container.appendChild(bg);\n // stage.window.getContainer().appendChild(container);\n // this.domTextEditor = container;\n\n // // 添加textArea\n // const character = this.editComponent.getActiveCharacter();\n // const text = (character as any)._text && (character as any)._text._graphic;\n // if (text) {\n // const textArea = document.createElement('textArea') as HTMLTextAreaElement;\n // const bounds = text.AABBBounds;\n // const theme = getTheme(text).text;\n // const {\n // fontFamily = theme.fontFamily,\n // fontSize = theme.fontSize,\n // fontWeight = theme.fontWeight\n // } = text.attribute;\n // textArea.style.alignSelf = `center`;\n // textArea.style.width = `${bounds.width()}px`;\n // textArea.style.height = `${bounds.height()}px`;\n // textArea.innerText = text.attribute.text;\n // textArea.style.border = 'none';\n // textArea.style.fontFamily = fontFamily;\n // textArea.style.fontSize = fontSize;\n // textArea.style.fontWeight = fontWeight;\n // textArea.style.overflow = 'hidden';\n // textArea.style.outline = 'none';\n // textArea.style.resize = 'none';\n // textArea.style.pointerEvents = 'all';\n // container.appendChild(textArea);\n // }\n\n // // textArea.value = this.activeGraphic;\n // }\n\n protected render() {\n super.render();\n // if (this.domTextEditor) {\n // const container = this.domTextEditor;\n // const { x, y, width, height } = this.rect.attribute;\n // container.style.left = x + 'px';\n // container.style.top = y + 'px';\n // container.style.width = width + 'px';\n // container.style.height = height + 'px';\n // }\n }\n\n // detachDomTextEditor() {\n // // if (this.domTextEditor && this.stage) {\n // // this.stage.window.getContainer().removeChild(this.domTextEditor);\n // // }\n // }\n\n release(): void {\n // this.detachDomTextEditor();\n this.endEditText();\n super.release();\n }\n}\n"]}
|
|
@@ -40,7 +40,7 @@ export type IUpdateParams = {
|
|
|
40
40
|
text?: string | string[];
|
|
41
41
|
};
|
|
42
42
|
export interface ITransformControl extends IGroup {
|
|
43
|
-
|
|
43
|
+
updateBoundsAndAngle: (b: IAABBBoundsLike, angle: number) => void;
|
|
44
44
|
onActive: () => void;
|
|
45
45
|
onUpdate: (cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) => void;
|
|
46
46
|
onEditorEnd: (cb: (event?: VRenderPointerEvent) => void) => void;
|
|
@@ -91,7 +91,7 @@ export declare class TransformControl extends AbstractComponent<Required<Transfo
|
|
|
91
91
|
private _dragEnd;
|
|
92
92
|
private _unDragEnd;
|
|
93
93
|
protected _editorEnd: () => void;
|
|
94
|
-
|
|
94
|
+
updateBoundsAndAngle(bounds: IAABBBoundsLike, angle: number): void;
|
|
95
95
|
onActive(): void;
|
|
96
96
|
initEvent(): void;
|
|
97
97
|
protected handleMouseMove: (e: any) => void;
|
|
@@ -131,6 +131,8 @@ export declare class TransformControl extends AbstractComponent<Required<Transfo
|
|
|
131
131
|
shapePoints: IPointLike[];
|
|
132
132
|
};
|
|
133
133
|
releaseEvent(): void;
|
|
134
|
+
releaseDragger(): void;
|
|
135
|
+
private _isRelease;
|
|
134
136
|
release(): void;
|
|
135
137
|
}
|
|
136
138
|
export {};
|
|
@@ -71,7 +71,7 @@ class TransformControl extends vrender_components_1.AbstractComponent {
|
|
|
71
71
|
this.isDragging && (this.dragOffsetX = 0, this.dragOffsetY = 0, this.setActiveGraphic(null),
|
|
72
72
|
null === (_a = this.editEndCbs) || void 0 === _a || _a.forEach((cb => cb(e))), this.isEditor = !1,
|
|
73
73
|
this.isDragging = !1);
|
|
74
|
-
}, this.editComponent = editComponent, this._editorConfig = {
|
|
74
|
+
}, this._isRelease = !1, this.editComponent = editComponent, this._editorConfig = {
|
|
75
75
|
move: !1 !== attributes.move,
|
|
76
76
|
rotate: !1 !== attributes.rotate,
|
|
77
77
|
resize: !1 !== attributes.resize,
|
|
@@ -84,7 +84,7 @@ class TransformControl extends vrender_components_1.AbstractComponent {
|
|
|
84
84
|
this.rect = (0, vrender_1.createRect)({
|
|
85
85
|
fill: "transparent",
|
|
86
86
|
stroke: !1,
|
|
87
|
-
pickable: !
|
|
87
|
+
pickable: !1
|
|
88
88
|
}), this.editBorder = (0, vrender_1.createRect)({
|
|
89
89
|
fill: !1,
|
|
90
90
|
stroke: !1
|
|
@@ -101,7 +101,7 @@ class TransformControl extends vrender_components_1.AbstractComponent {
|
|
|
101
101
|
visible: !1
|
|
102
102
|
}));
|
|
103
103
|
}
|
|
104
|
-
|
|
104
|
+
updateBoundsAndAngle(bounds, angle) {
|
|
105
105
|
var _a, _b;
|
|
106
106
|
this.rect.setAttributes({
|
|
107
107
|
x: bounds.x1,
|
|
@@ -111,7 +111,8 @@ class TransformControl extends vrender_components_1.AbstractComponent {
|
|
|
111
111
|
});
|
|
112
112
|
const x = (null !== (_a = this.attribute.x) && void 0 !== _a ? _a : 0) + (bounds.x1 + bounds.x2) / 2, y = (null !== (_b = this.attribute.y) && void 0 !== _b ? _b : 0) + (bounds.y1 + bounds.y2) / 2;
|
|
113
113
|
this.setAttributes({
|
|
114
|
-
anchor: [ x, y ]
|
|
114
|
+
anchor: [ x, y ],
|
|
115
|
+
angle: angle
|
|
115
116
|
});
|
|
116
117
|
}
|
|
117
118
|
onActive() {
|
|
@@ -396,9 +397,12 @@ class TransformControl extends vrender_components_1.AbstractComponent {
|
|
|
396
397
|
this.stage.removeEventListener("pointerup", this.handleDragMouseUp)), this.removeEventListener("pointerout", this.handleMouseOut),
|
|
397
398
|
this.removeEventListener("pointerdown", this.handleDragMouseDown);
|
|
398
399
|
}
|
|
400
|
+
releaseDragger() {
|
|
401
|
+
this._dragger && this._dragger.release();
|
|
402
|
+
}
|
|
399
403
|
release() {
|
|
400
|
-
this.releaseEvent(), this.parent.removeChild(this), this.editBorder = null,
|
|
401
|
-
this.editEndCbs = [], this.unTransStartCbs = [], super.release();
|
|
404
|
+
this._isRelease = !0, this.releaseEvent(), this.parent.removeChild(this), this.editBorder = null,
|
|
405
|
+
this.updateCbs = [], this.editEndCbs = [], this.unTransStartCbs = [], super.release();
|
|
402
406
|
}
|
|
403
407
|
}
|
|
404
408
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/edit/edit-component/edit-control/transform-control.ts"],"names":[],"mappings":"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","file":"transform-control.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n ICircleGraphicAttribute,\n IPathGraphicAttribute,\n IGraphic,\n IGroupGraphicAttribute,\n IRect,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n IGroup,\n IGraphicAttribute\n} from '@visactor/vrender';\nimport { createRect } from '@visactor/vrender';\nimport type { IAABBBounds, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '@visactor/vrender-components';\nimport { transformPointWithMatrix } from '../../../util/space';\nimport { MinSize } from '../../../constants/attribute';\nimport { normalizeAngle } from '../../../util/math';\nimport { DRAG_ANCHOR_COLOR, SHAPE_SELECT_COLOR } from './constants';\nimport type { VRenderPointerEvent } from '../../../interface/type';\nimport type { IEditComponent } from '../../interface';\nimport { Edit } from '../../edit';\nimport { DragComponent } from './transform-drag';\n// import { EditorActionMode } from './enum';\n\ntype AnchorDirection = 'top' | 'bottom' | 'left-top' | 'left-bottom' | 'right' | 'left' | 'right-top' | 'right-bottom';\n\nconst fixedAngles = [0, Math.PI / 2, Math.PI, (Math.PI * 3) / 2, Math.PI * 2];\nconst maxAngleDifference = (3 / 180) * Math.PI; // 10 degrees\n\nexport type TransformAttributes = {\n padding?: number | [number, number, number, number];\n resizeBorder?: Partial<ILineGraphicAttribute>;\n cornerRect?: Partial<IRectGraphicAttribute>;\n rotateCircle?: Partial<ICircleGraphicAttribute>;\n rotatePath?: Partial<IPathGraphicAttribute> & { size: number };\n handlerLine?: Partial<ILineGraphicAttribute> & { size: number };\n shapeCircle?: Partial<ICircleGraphicAttribute>;\n move?: boolean;\n rotate?: boolean;\n resize?: boolean;\n reshape?: boolean;\n setCursor?: (c: string) => void;\n shapePoints?: IPointLike[];\n isShapePointAbsolute?: boolean;\n /**\n * 支持的锚点\n */\n enabledAnchors?: AnchorDirection[];\n // minSize\n minWidth?: number;\n minHeight?: number;\n proportionalScaling?: boolean;\n} & IGroupGraphicAttribute;\n\nexport type IUpdateParams = {\n x: number;\n y: number;\n width: number;\n height: number;\n angle: number;\n anchor: [number | string, number | string];\n // relative position of shape point\n shapePoints: IPointLike[];\n // text\n text?: string | string[];\n};\n\nconst borderAnchors = ['top', 'bottom', 'left', 'right'];\nconst cornerAnchors = ['left-top', 'right-top', 'left-bottom', 'right-bottom'];\n\nconst anchorPositionMap = {\n top: [0, 0, 1, 0],\n bottom: [0, 1, 1, 1],\n left: [0, 0, 0, 1],\n right: [1, 0, 1, 1],\n\n 'left-top': [0, 0],\n 'right-top': [1, 0],\n 'left-bottom': [0, 1],\n 'right-bottom': [1, 1]\n};\n\nconst anchorCursorMap = {\n 'left-top': 'nwse-resize',\n top: 'ns-resize',\n 'right-top': 'nesw-resize',\n left: 'ew-resize',\n right: 'ew-resize',\n 'left-bottom': 'nesw-resize',\n bottom: 'ns-resize',\n 'right-bottom': 'nwse-resize'\n};\n\nexport interface ITransformControl extends IGroup {\n updateSubBounds: (b: IAABBBoundsLike) => void;\n onActive: () => void;\n onUpdate: (cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) => void;\n onEditorEnd: (cb: (event?: VRenderPointerEvent) => void) => void;\n onEditorStart: (cb: (event?: VRenderPointerEvent) => void) => void;\n onUnTransStart: (cb: (event: PointerEvent) => void) => void;\n}\n\nexport class TransformControl extends AbstractComponent<Required<TransformAttributes>> implements ITransformControl {\n name = 'TransformControl';\n rectB: IAABBBounds;\n isDragging: boolean = false;\n dragOffsetX: number;\n dragOffsetY: number;\n dragStartAngle: number = 0;\n activeGraphic: IGraphic | null;\n horizontalResizble: number;\n verticalResizble: number;\n rotatable: number;\n reshapeState: number;\n rect: IRect;\n editBorder: IRect;\n // state: {\n // actionMode: EditorActionMode;\n // };\n // 是否正在执行addChildUpdateBoundTag,避免循环调用\n runningAddChildUpdateBoundTag: boolean;\n\n updateCbs: Array<(data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false>;\n editEndCbs: Array<(event?: VRenderPointerEvent) => void>;\n editStartCbs: Array<(event?: VRenderPointerEvent) => void>;\n unTransStartCbs: Array<(event: PointerEvent) => void>;\n\n isEditor: boolean = false;\n\n _editorConfig: {\n move: boolean;\n rotate: boolean;\n resize: boolean;\n reshape: boolean;\n };\n\n minSize: { width: number; height: number } = { width: MinSize, height: MinSize };\n\n proportionalScaling: boolean = false;\n // 缩放前的属性\n _rectBeforeScale: IRectGraphicAttribute;\n // 缩放前的点击位置,用来进行等比缩放处理缩放比\n _eventPosBeforeScale: any;\n\n _setCursor: (c: string) => void = null;\n\n editComponent: IEditComponent;\n\n // drag\n _dragger: DragComponent;\n private _lastBoxInDrag: IRect;\n\n static defaultAttributes: Partial<TransformAttributes> = {\n // 去掉padding\n // padding: 2,\n resizeBorder: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1\n },\n cornerRect: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n width: 8,\n height: 8,\n cornerRadius: 2\n },\n rotateCircle: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n radius: 10\n },\n rotatePath: {\n fill: '#000000',\n size: 12,\n angle: Math.PI,\n // eslint-disable-next-line\n path: 'M202.403,95.22c0,46.312-33.237,85.002-77.109,93.484v25.663l-69.76-40l69.76-40v23.494 c27.176-7.87,47.109-32.964,47.109-62.642c0-35.962-29.258-65.22-65.22-65.22s-65.22,29.258-65.22,65.22 c0,9.686,2.068,19.001,6.148,27.688l-27.154,12.754c-5.968-12.707-8.994-26.313-8.994-40.441C11.964,42.716,54.68,0,107.184,0 S202.403,42.716,202.403,95.22z'\n },\n handlerLine: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n size: 24\n },\n shapeCircle: {\n fill: 'white',\n lineWidth: 1,\n radius: 4,\n stroke: DRAG_ANCHOR_COLOR,\n startAngle: 0,\n endAngle: Math.PI * 2\n }\n };\n\n constructor(editComponent: IEditComponent, attributes: Partial<TransformAttributes>) {\n super(merge({ shadowRootIdx: 1 }, TransformControl.defaultAttributes, attributes));\n this.editComponent = editComponent;\n this._editorConfig = {\n move: attributes.move !== false,\n rotate: attributes.rotate !== false,\n resize: attributes.resize !== false,\n reshape: attributes.reshape !== false\n };\n // this.state = {\n // actionMode: EditorActionMode.addTool\n // };\n this.rectB = new AABBBounds();\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.activeGraphic = null;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.runningAddChildUpdateBoundTag = false;\n this.minSize.width = attributes.minWidth ?? MinSize;\n this.minSize.height = attributes.minHeight ?? MinSize;\n this.proportionalScaling = attributes.proportionalScaling === true;\n this._setCursor = attributes.setCursor;\n this.rect = createRect({\n fill: 'transparent',\n stroke: false,\n pickable: true\n });\n // this.rect.attachShadow();\n this.editBorder = createRect({\n fill: false,\n stroke: false\n });\n this.editBorder.attachShadow();\n this.add(this.rect);\n this.add(this.editBorder);\n this.editStartCbs = [];\n this.unTransStartCbs = [];\n this.updateCbs = [];\n this.editEndCbs = [];\n }\n\n addDrag() {\n if (!this.stage) {\n return;\n }\n this._dragger = new DragComponent(this.stage);\n this._dragger.dragHandler(this._dragElement);\n this._dragger.dragEndHandler(this._dragEnd);\n this._dragger.unDragEndHandler(this._unDragEnd);\n this._lastBoxInDrag = createRect({\n pickable: false,\n stroke: SHAPE_SELECT_COLOR,\n strokeOpacity: 0.4,\n visible: false\n });\n }\n\n protected _dragElement = (moveX: number, moveY: number) => {\n this._lastBoxInDrag.setAttribute('visible', true);\n const scale = this.stage.defaultLayer?.globalTransMatrix.a ?? 1;\n this.moveBy(moveX / scale, moveY / scale);\n };\n private _dragEnd = () => {\n this._editorEnd();\n };\n private _unDragEnd = () => {\n this._editorEnd();\n };\n\n protected _editorEnd = () => {\n // this._endHandler(this._editorBox.getTransformAttribute());\n // this._editorBox.isEditor = false;\n // this._snapLineX.setAttributes({ visible: false });\n // this._snapLineY.setAttributes({ visible: false });\n\n // this._snapTargetBoxX.setAttributes({ visible: false });\n // this._snapTargetBoxY.setAttributes({ visible: false });\n\n this._lastBoxInDrag.setAttribute('visible', false);\n // this._opt.editorEvent.setCursorSyncToTriggerLayer();\n };\n\n updateSubBounds(bounds: IAABBBoundsLike) {\n // set bounds\n this.rect.setAttributes({\n x: bounds.x1,\n y: bounds.y1,\n width: bounds.x2 - bounds.x1,\n height: bounds.y2 - bounds.y1\n });\n\n // set anchor\n const x = (this.attribute.x ?? 0) + (bounds.x1 + bounds.x2) / 2;\n const y = (this.attribute.y ?? 0) + (bounds.y1 + bounds.y2) / 2;\n this.setAttributes({ anchor: [x, y] });\n }\n\n onActive() {\n this.initEvent();\n }\n\n initEvent() {\n // cursor\n this.editBorder.addEventListener('mousemove', this.handleMouseMove);\n this.addEventListener('pointerout', this.handleMouseOut);\n\n // drag\n this.addEventListener('pointerdown', this.handleDragMouseDown);\n this.addDrag();\n\n this.stage.addEventListener('pointermove', this.handleDragMouseMove);\n this.stage.addEventListener('pointerup', this.handleDragMouseUp);\n }\n\n protected handleMouseMove = (e: any) => {\n if (e.pickParams) {\n const { shadowTarget } = e.pickParams;\n this.setCursor(shadowTarget.attribute.cursor);\n } else {\n this.setCursor();\n }\n };\n\n protected handleMouseOut = (e: any) => {\n this.setCursor();\n };\n\n protected handleDragMouseDown = (e: any) => {\n this.isEditor = true;\n this.editStartCbs.forEach(cb => cb(e));\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n\n const { shadowTarget } = e.pickParams || {};\n // 开启move\n if (shadowTarget && this.stage) {\n this.setActiveGraphic(shadowTarget);\n this._rectBeforeScale = { ...this.rect.attribute };\n this._eventPosBeforeScale = layerPos;\n this.isDragging = true;\n this.dragStartAngle = this.attribute.angle ?? 0;\n } else {\n this.unTransStartCbs.forEach(cb => cb(e));\n this._dragger.startDrag(e);\n }\n };\n\n protected handleDragMouseMove = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = true;\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n\n const dx = layerPos.x - this.dragOffsetX;\n const dy = layerPos.y - this.dragOffsetY;\n\n if (dx === 0 && dy === 0) {\n return;\n }\n\n if (this.rotatable) {\n this.handleRotate(layerPos);\n this.dispatchUpdate(e);\n } else if (this.reshapeState) {\n this._handleReshape(dx, dy);\n this.dispatchUpdate(e);\n } else {\n this._handleScale(dx, dy, e);\n this.dispatchUpdate(e);\n }\n\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n };\n\n protected handleDragMouseUp = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = false;\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.setActiveGraphic(null);\n this.editEndCbs?.forEach(cb => cb(e));\n this.isEditor = false;\n this.isDragging = false;\n };\n\n protected setCursor(c?: string) {\n if (this.stage) {\n this.stage.setCursor(c);\n this._setCursor?.(c);\n }\n }\n\n protected setActiveGraphic(g: IGraphic | null) {\n this.activeGraphic = g;\n // 设置resize的方向\n let reset = true;\n if (g && g.name) {\n reset = false;\n const name = g.name;\n const dirList = name.split('-');\n const type = dirList.shift();\n if (type === 'scale') {\n if (dirList.length === 2) {\n this.horizontalResizble = dirList[0] === 'left' ? -1 : 1;\n this.verticalResizble = dirList[1] === 'top' ? -1 : 1;\n } else {\n const dir = dirList[0];\n const h = dir === 'left' || dir === 'right';\n this.horizontalResizble = h ? (dirList[0] === 'left' ? -1 : 1) : 0;\n this.verticalResizble = h ? 0 : dirList[0] === 'top' ? -1 : 1;\n }\n this.rotatable = 0;\n } else if (type === 'rotate') {\n this.rotatable = 1;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else if (type === 'reshape') {\n this.reshapeState = Number.parseInt(dirList[0], 10) + 1;\n this.rotatable = 0;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else {\n reset = true;\n }\n }\n if (reset) {\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.reshapeState = 0;\n }\n }\n\n // 非等比缩放\n protected handleScale(dx: number, dy: number) {\n const { anchor, x, y, width, height } = this._getRectWithOffset(dx, dy, this.rect.attribute).attribute;\n if (width < this.minSize.width) {\n return;\n }\n if (height < this.minSize.height) {\n return;\n }\n this.rect.setAttributes({\n width,\n height,\n x,\n y\n });\n this.setAttributes({\n anchor: anchor as [number | string, number | string]\n });\n }\n\n // 缩放\n private _handleScale(dx: number, dy: number, e: any) {\n if (this.proportionalScaling) {\n this._handleScaleProportional(dx, dy, e);\n } else {\n this.handleScale(dx, dy);\n }\n }\n\n // 等比缩放\n private _handleScaleProportional(dx: number, dy: number, e: any) {\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n const { attribute, temp } = this._getRectWithOffset(\n layerPos.x - this._eventPosBeforeScale.x,\n layerPos.y - this._eventPosBeforeScale.y,\n this._rectBeforeScale\n );\n\n const maxScale = Math.max(\n attribute.width / this._rectBeforeScale.width,\n attribute.height / this._rectBeforeScale.height\n );\n const finalWidth = this._rectBeforeScale.width * maxScale;\n const finalHeight = this._rectBeforeScale.height * maxScale;\n if (finalWidth < this.minSize.width) {\n return;\n }\n if (finalHeight < this.minSize.height) {\n return;\n }\n let nextP2 = temp.nextP2;\n const nextP1 = temp.nextP1;\n\n const angle = this.getAngle();\n // console.log('_handleScaleProportional', nextP1, nextP2, angle, this.verticalResizble, this.horizontalResizble);\n\n // v 1 h 1\n // 拖动的右下角 不需要改变\n if (this.verticalResizble > 0 && this.horizontalResizble > 0) {\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // 1 h -1\n // 拖动的左下角 以右上角为基准\n else if (this.verticalResizble > 0 && this.horizontalResizble < 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x + attribute.width * Math.cos(angle),\n y: nextP1.y + attribute.width * Math.sin(angle)\n };\n // final下的 p1 与 p2\n nextP1.x = lockPos.x - finalWidth * Math.cos(angle);\n nextP1.y = lockPos.y - finalWidth * Math.sin(angle);\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的右上角 以左下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble > 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x - attribute.height * Math.sin(angle),\n y: nextP1.y + attribute.height * Math.cos(angle)\n };\n // final下的 p1 与 p2\n (nextP1.x = lockPos.x + finalHeight * Math.sin(angle)), (nextP1.y = lockPos.y - finalHeight * Math.cos(angle));\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的左上角 以右下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble < 0) {\n // p2 锁定 ,计算 p1\n nextP1.x = nextP2.x - Math.cos(angle) * finalWidth + Math.sin(angle) * finalHeight;\n nextP1.y = nextP2.y - Math.sin(angle) * finalWidth - Math.cos(angle) * finalHeight;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n this.rect.setAttributes({\n width: finalWidth,\n height: finalHeight,\n x: center.x - finalWidth / 2,\n y: center.y - finalHeight / 2\n });\n this.setAttributes({\n anchor: [center.x, center.y]\n });\n }\n\n private _handleReshape(dx: number, dy: number) {\n const { width, height } = this.rect.attribute;\n const { shapePoints } = this.attribute;\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n if (!this.attribute.isShapePointAbsolute) {\n dx /= width;\n dy /= height;\n }\n const nextShapePoints = shapePoints.map((shapePoint, i) => {\n return i + 1 === this.reshapeState ? { x: shapePoint.x + dx, y: shapePoint.y + dy } : shapePoint;\n });\n this.setAttributes({\n shapePoints: nextShapePoints\n });\n }\n\n private _getRectWithOffset(dx: number, dy: number, lastAttribute: IRectGraphicAttribute) {\n // 投影得到旋转前的dx和dy\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n\n dx *= this.horizontalResizble;\n dy *= this.verticalResizble;\n\n const { x, y, width, height } = lastAttribute;\n\n const m = this.transMatrix;\n // 原始的x和y位置\n const nextP1 = {\n x: m.a * x + m.c * y + m.e,\n y: m.b * x + m.d * y + m.f\n };\n const nextP2 = {\n x: m.a * (x + width) + m.c * (y + height) + m.e,\n y: m.b * (x + width) + m.d * (y + height) + m.f\n };\n if (this.horizontalResizble < 0) {\n nextP1.x -= Math.cos(angle) * dx;\n nextP1.y -= Math.sin(angle) * dx;\n } else if (this.horizontalResizble > 0) {\n nextP2.x += Math.cos(angle) * dx;\n nextP2.y += Math.sin(angle) * dx;\n }\n\n if (this.verticalResizble < 0) {\n nextP1.x -= Math.cos(angle + pi / 2) * dy;\n nextP1.y -= Math.sin(angle + pi / 2) * dy;\n } else if (this.verticalResizble > 0) {\n nextP2.x += Math.cos(angle + pi / 2) * dy;\n nextP2.y += Math.sin(angle + pi / 2) * dy;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n\n const tw = width + dx;\n const th = height + dy;\n\n // 返回属性计算结果+当前计算过程的重要变量\n return {\n attribute: {\n width: tw,\n height: th,\n x: center.x - tw / 2,\n y: center.y - th / 2,\n anchor: [center.x, center.y]\n },\n temp: {\n nextP1,\n nextP2,\n dx,\n dy\n }\n };\n }\n\n private _getRectP2(p1: { x: number; y: number }, size: { width: number; height: number }, angle: number) {\n return {\n x: p1.x + Math.cos(angle) * size.width - Math.sin(angle) * size.height,\n y: p1.y + Math.sin(angle) * size.width + Math.cos(angle) * size.height\n };\n }\n\n protected handleRotate(currentPoint: { x: number; y: number }) {\n const originB = this.rectB;\n const cx = (originB.x1 + originB.x2) / 2;\n const cy = (originB.y1 + originB.y2) / 2;\n\n const vectorDrag = { x: this._eventPosBeforeScale.x - cx, y: this._eventPosBeforeScale.y - cy };\n const vectorCurrent = { x: currentPoint.x - cx, y: currentPoint.y - cy };\n const dot = vectorDrag.x * vectorCurrent.x + vectorDrag.y * vectorCurrent.y;\n const modDrag = Math.sqrt(vectorDrag.x ** 2 + vectorDrag.y ** 2);\n const modCurrent = Math.sqrt(vectorCurrent.x ** 2 + vectorCurrent.y ** 2);\n const cosAngle = dot / (modDrag * modCurrent);\n const cross = vectorDrag.x * vectorCurrent.y - vectorDrag.y * vectorCurrent.x;\n const delta = cross < 0 ? Math.PI * 2 - Math.acos(cosAngle) : Math.acos(cosAngle);\n\n this.setAttributes({\n angle: this.fixAngle(this.dragStartAngle + delta),\n anchor: [cx, cy]\n });\n }\n\n private fixAngle(angle: number) {\n angle = normalizeAngle(angle);\n for (const fixedAngle of fixedAngles) {\n if (angle >= fixedAngle - maxAngleDifference && angle <= fixedAngle + maxAngleDifference) {\n return fixedAngle;\n }\n }\n return angle;\n }\n\n getAngle(): number {\n if (!this.attribute.postMatrix) {\n return this.attribute.angle ?? 0;\n }\n const m = this.transMatrix;\n return Math.atan2(m.b, m.a);\n }\n\n protected render() {\n const {\n resizeBorder,\n padding,\n cornerRect,\n rotateCircle,\n rotatePath,\n handlerLine,\n shapeCircle,\n enabledAnchors = ['top', 'bottom', 'left-top', 'left-bottom', 'right', 'left', 'right-top', 'right-bottom'],\n shapePoints = [],\n isShapePointAbsolute\n } = this.attribute as TransformAttributes;\n\n const root = this.editBorder.shadowRoot;\n if (!root || this.count === 1) {\n return;\n }\n\n const parsedPadding = normalizePadding(padding as any);\n const { x = 0, y = 0, width: w = 0, height: h = 0 } = this.rect.attribute;\n this.rectB.setValue(x, y, x + w, y + h);\n\n const minX = x - parsedPadding[3];\n const minY = y - parsedPadding[0];\n const width = w + parsedPadding[1] + parsedPadding[3];\n const height = h + parsedPadding[0] + parsedPadding[2];\n\n borderAnchors.forEach((anchor, i) => {\n const enableResize = this._editorConfig.resize && enabledAnchors.includes(anchor as AnchorDirection);\n const item = anchorPositionMap[anchor];\n const cursor = enableResize ? anchorCursorMap[anchor] : 'default';\n root.createOrUpdateChild(\n enableResize ? `scale-${anchor}` : `stroke-line-${anchor}`,\n {\n x: minX,\n y: minY,\n points: [\n { x: item[0] * width, y: item[1] * height },\n { x: item[2] * width, y: item[3] * height }\n ],\n cursor,\n ...resizeBorder\n },\n 'line'\n );\n });\n\n if (this._editorConfig.rotate) {\n // 添加顶部\n root.createOrUpdateChild(\n 'top-handler-line',\n {\n x: minX + width / 2,\n y: minY,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: -handlerLine.size }\n ],\n ...handlerLine\n },\n 'line'\n );\n root.createOrUpdateChild(\n `rotate-all`,\n {\n x: minX + width / 2,\n y: minY - handlerLine.size - rotateCircle.radius,\n cursor: 'grab',\n ...rotateCircle\n },\n 'circle'\n );\n root.createOrUpdateChild(\n `path-rotate`,\n {\n pickable: false,\n x: minX + width / 2 + rotatePath.size / 2,\n y: minY - handlerLine.size + rotatePath.size / 2 - rotateCircle.radius,\n scaleX: rotatePath.size / 200,\n scaleY: rotatePath.size / 200,\n cursor: 'grab',\n dx: 0.5,\n dy: -0.5,\n ...rotatePath\n },\n 'path'\n );\n }\n\n // 添加锚点\n if (this._editorConfig.resize) {\n enabledAnchors.forEach((anchor: string) => {\n if (!cornerAnchors.includes(anchor)) {\n return;\n }\n const item = anchorPositionMap[anchor];\n const cursor = anchorCursorMap[anchor];\n root.createOrUpdateChild(\n `scale-${anchor}`,\n {\n x: minX + item[0] * width - cornerRect.width! / 2,\n y: minY + item[1] * height - cornerRect.height! / 2,\n cursor,\n ...cornerRect\n },\n 'rect'\n );\n });\n }\n\n if (this._editorConfig.reshape) {\n const shapePointsChildren = root.children.filter((child: any) => child.name.startsWith('reshape'));\n if (shapePointsChildren.length !== shapePoints.length) {\n shapePointsChildren.forEach((child: any) => root.removeChild(child));\n }\n shapePoints.forEach((point, i) => {\n root.createOrUpdateChild(\n `reshape-${i}`,\n {\n x: isShapePointAbsolute ? point.x : point.x * w + x,\n y: isShapePointAbsolute ? point.y : point.y * h + y,\n cursor: 'move',\n ...shapeCircle\n },\n 'circle'\n );\n });\n }\n }\n\n moveBy(dx: number, dy: number): this {\n const { x, y, width, height } = this.rect.attribute;\n this.rect.setAttributes({\n width: width,\n height: height,\n x: x + dx,\n y: y + dy\n });\n this.setAttributes({\n anchor: [x + dx + width / 2, y + dy + height / 2]\n });\n this.dispatchUpdate();\n return this;\n }\n\n dispatchUpdate(e?: any) {\n const out = this.getTransformAttribute();\n this.updateCbs.forEach(cb => {\n const data = cb(out, e);\n if (data) {\n const { x, y, width, height, anchor, angle, shapePoints } = data;\n Number.isFinite(x) && this.rect.setAttribute('x', x);\n Number.isFinite(y) && this.rect.setAttribute('y', y);\n Number.isFinite(width) && this.rect.setAttribute('width', width);\n Number.isFinite(height) && this.rect.setAttribute('height', height);\n anchor && this.setAttribute('anchor', anchor);\n Number.isFinite(angle) && this.setAttribute('angle', angle);\n shapePoints && this.setAttribute('shapePoints', shapePoints);\n }\n });\n }\n\n onUpdate(cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) {\n this.updateCbs.push(cb);\n }\n\n onEditorEnd(cb: (event?: VRenderPointerEvent) => void) {\n this.editEndCbs.push(cb);\n }\n onEditorStart(cb: (event?: VRenderPointerEvent) => void) {\n this.editStartCbs.push(cb);\n }\n onUnTransStart(cb: (event: PointerEvent) => void) {\n this.unTransStartCbs.push(cb);\n }\n\n addChildUpdateBoundTag() {\n super.addChildUpdateBoundTag();\n\n // 如果wrap内的内容bounds变化,那就需要重新调用render\n if (this.runningAddChildUpdateBoundTag) {\n return;\n }\n this.runningAddChildUpdateBoundTag = true;\n\n this.render();\n\n this.runningAddChildUpdateBoundTag = false;\n }\n\n getTransformAttribute() {\n const { x, y, width, height } = this.rect.attribute;\n const { angle, anchor, shapePoints } = this.attribute;\n return {\n x,\n y,\n width,\n height,\n angle,\n anchor,\n shapePoints\n };\n }\n\n releaseEvent() {\n this.editBorder.removeEventListener('mousemove', this.handleMouseMove);\n if (this.stage) {\n this.stage.removeEventListener('pointermove', this.handleDragMouseMove);\n this.stage.removeEventListener('pointerup', this.handleDragMouseUp);\n }\n this.removeEventListener('pointerout', this.handleMouseOut);\n this.removeEventListener('pointerdown', this.handleDragMouseDown);\n }\n\n release(): void {\n // event\n this.releaseEvent();\n\n this.parent.removeChild(this);\n this.editBorder = null;\n this.updateCbs = [];\n this.editEndCbs = [];\n this.unTransStartCbs = [];\n super.release();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/edit/edit-component/edit-control/transform-control.ts"],"names":[],"mappings":"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","file":"transform-control.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n ICircleGraphicAttribute,\n IPathGraphicAttribute,\n IGraphic,\n IGroupGraphicAttribute,\n IRect,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n IGroup,\n IGraphicAttribute\n} from '@visactor/vrender';\nimport { createRect } from '@visactor/vrender';\nimport type { IAABBBounds, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '@visactor/vrender-components';\nimport { transformPointWithMatrix } from '../../../util/space';\nimport { MinSize } from '../../../constants/attribute';\nimport { normalizeAngle } from '../../../util/math';\nimport { DRAG_ANCHOR_COLOR, SHAPE_SELECT_COLOR } from './constants';\nimport type { VRenderPointerEvent } from '../../../interface/type';\nimport type { IEditComponent } from '../../interface';\nimport { Edit } from '../../edit';\nimport { DragComponent } from './transform-drag';\nimport { StoryEvent } from '../../../story/interface';\n// import { EditorActionMode } from './enum';\n\ntype AnchorDirection = 'top' | 'bottom' | 'left-top' | 'left-bottom' | 'right' | 'left' | 'right-top' | 'right-bottom';\n\nconst fixedAngles = [0, Math.PI / 2, Math.PI, (Math.PI * 3) / 2, Math.PI * 2];\nconst maxAngleDifference = (3 / 180) * Math.PI; // 10 degrees\n\nexport type TransformAttributes = {\n padding?: number | [number, number, number, number];\n resizeBorder?: Partial<ILineGraphicAttribute>;\n cornerRect?: Partial<IRectGraphicAttribute>;\n rotateCircle?: Partial<ICircleGraphicAttribute>;\n rotatePath?: Partial<IPathGraphicAttribute> & { size: number };\n handlerLine?: Partial<ILineGraphicAttribute> & { size: number };\n shapeCircle?: Partial<ICircleGraphicAttribute>;\n move?: boolean;\n rotate?: boolean;\n resize?: boolean;\n reshape?: boolean;\n setCursor?: (c: string) => void;\n shapePoints?: IPointLike[];\n isShapePointAbsolute?: boolean;\n /**\n * 支持的锚点\n */\n enabledAnchors?: AnchorDirection[];\n // minSize\n minWidth?: number;\n minHeight?: number;\n proportionalScaling?: boolean;\n} & IGroupGraphicAttribute;\n\nexport type IUpdateParams = {\n x: number;\n y: number;\n width: number;\n height: number;\n angle: number;\n anchor: [number | string, number | string];\n // relative position of shape point\n shapePoints: IPointLike[];\n // text\n text?: string | string[];\n};\n\nconst borderAnchors = ['top', 'bottom', 'left', 'right'];\nconst cornerAnchors = ['left-top', 'right-top', 'left-bottom', 'right-bottom'];\n\nconst anchorPositionMap = {\n top: [0, 0, 1, 0],\n bottom: [0, 1, 1, 1],\n left: [0, 0, 0, 1],\n right: [1, 0, 1, 1],\n\n 'left-top': [0, 0],\n 'right-top': [1, 0],\n 'left-bottom': [0, 1],\n 'right-bottom': [1, 1]\n};\n\nconst anchorCursorMap = {\n 'left-top': 'nwse-resize',\n top: 'ns-resize',\n 'right-top': 'nesw-resize',\n left: 'ew-resize',\n right: 'ew-resize',\n 'left-bottom': 'nesw-resize',\n bottom: 'ns-resize',\n 'right-bottom': 'nwse-resize'\n};\n\nexport interface ITransformControl extends IGroup {\n updateBoundsAndAngle: (b: IAABBBoundsLike, angle: number) => void;\n onActive: () => void;\n onUpdate: (cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) => void;\n onEditorEnd: (cb: (event?: VRenderPointerEvent) => void) => void;\n onEditorStart: (cb: (event?: VRenderPointerEvent) => void) => void;\n onUnTransStart: (cb: (event: PointerEvent) => void) => void;\n}\n\nexport class TransformControl extends AbstractComponent<Required<TransformAttributes>> implements ITransformControl {\n name = 'TransformControl';\n rectB: IAABBBounds;\n isDragging: boolean = false;\n dragOffsetX: number;\n dragOffsetY: number;\n dragStartAngle: number = 0;\n activeGraphic: IGraphic | null;\n horizontalResizble: number;\n verticalResizble: number;\n rotatable: number;\n reshapeState: number;\n rect: IRect;\n editBorder: IRect;\n // state: {\n // actionMode: EditorActionMode;\n // };\n // 是否正在执行addChildUpdateBoundTag,避免循环调用\n runningAddChildUpdateBoundTag: boolean;\n\n updateCbs: Array<(data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false>;\n editEndCbs: Array<(event?: VRenderPointerEvent) => void>;\n editStartCbs: Array<(event?: VRenderPointerEvent) => void>;\n unTransStartCbs: Array<(event: PointerEvent) => void>;\n\n isEditor: boolean = false;\n\n _editorConfig: {\n move: boolean;\n rotate: boolean;\n resize: boolean;\n reshape: boolean;\n };\n\n minSize: { width: number; height: number } = { width: MinSize, height: MinSize };\n\n proportionalScaling: boolean = false;\n // 缩放前的属性\n _rectBeforeScale: IRectGraphicAttribute;\n // 缩放前的点击位置,用来进行等比缩放处理缩放比\n _eventPosBeforeScale: any;\n\n _setCursor: (c: string) => void = null;\n\n editComponent: IEditComponent;\n\n // drag\n _dragger: DragComponent;\n private _lastBoxInDrag: IRect;\n\n static defaultAttributes: Partial<TransformAttributes> = {\n // 去掉padding\n // padding: 2,\n resizeBorder: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1\n },\n cornerRect: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n width: 8,\n height: 8,\n cornerRadius: 2\n },\n rotateCircle: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n radius: 10\n },\n rotatePath: {\n fill: '#000000',\n size: 12,\n angle: Math.PI,\n // eslint-disable-next-line\n path: 'M202.403,95.22c0,46.312-33.237,85.002-77.109,93.484v25.663l-69.76-40l69.76-40v23.494 c27.176-7.87,47.109-32.964,47.109-62.642c0-35.962-29.258-65.22-65.22-65.22s-65.22,29.258-65.22,65.22 c0,9.686,2.068,19.001,6.148,27.688l-27.154,12.754c-5.968-12.707-8.994-26.313-8.994-40.441C11.964,42.716,54.68,0,107.184,0 S202.403,42.716,202.403,95.22z'\n },\n handlerLine: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n size: 24\n },\n shapeCircle: {\n fill: 'white',\n lineWidth: 1,\n radius: 4,\n stroke: DRAG_ANCHOR_COLOR,\n startAngle: 0,\n endAngle: Math.PI * 2\n }\n };\n\n constructor(editComponent: IEditComponent, attributes: Partial<TransformAttributes>) {\n super(merge({ shadowRootIdx: 1 }, TransformControl.defaultAttributes, attributes));\n this.editComponent = editComponent;\n this._editorConfig = {\n move: attributes.move !== false,\n rotate: attributes.rotate !== false,\n resize: attributes.resize !== false,\n reshape: attributes.reshape !== false\n };\n // this.state = {\n // actionMode: EditorActionMode.addTool\n // };\n this.rectB = new AABBBounds();\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.activeGraphic = null;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.runningAddChildUpdateBoundTag = false;\n this.minSize.width = attributes.minWidth ?? MinSize;\n this.minSize.height = attributes.minHeight ?? MinSize;\n this.proportionalScaling = attributes.proportionalScaling === true;\n this._setCursor = attributes.setCursor;\n this.rect = createRect({\n fill: 'transparent',\n stroke: false,\n pickable: false\n });\n // this.rect.attachShadow();\n this.editBorder = createRect({\n fill: false,\n stroke: false\n });\n this.editBorder.attachShadow();\n this.add(this.rect);\n this.add(this.editBorder);\n this.editStartCbs = [];\n this.unTransStartCbs = [];\n this.updateCbs = [];\n this.editEndCbs = [];\n }\n\n addDrag() {\n if (!this.stage) {\n return;\n }\n this._dragger = new DragComponent(this.stage);\n this._dragger.dragHandler(this._dragElement);\n this._dragger.dragEndHandler(this._dragEnd);\n this._dragger.unDragEndHandler(this._unDragEnd);\n this._lastBoxInDrag = createRect({\n pickable: false,\n stroke: SHAPE_SELECT_COLOR,\n strokeOpacity: 0.4,\n visible: false\n });\n }\n\n protected _dragElement = (moveX: number, moveY: number) => {\n this._lastBoxInDrag.setAttribute('visible', true);\n const scale = this.stage.defaultLayer?.globalTransMatrix.a ?? 1;\n this.moveBy(moveX / scale, moveY / scale);\n };\n private _dragEnd = () => {\n this._editorEnd();\n };\n private _unDragEnd = () => {\n this._editorEnd();\n };\n\n protected _editorEnd = () => {\n // this._endHandler(this._editorBox.getTransformAttribute());\n // this._editorBox.isEditor = false;\n // this._snapLineX.setAttributes({ visible: false });\n // this._snapLineY.setAttributes({ visible: false });\n\n // this._snapTargetBoxX.setAttributes({ visible: false });\n // this._snapTargetBoxY.setAttributes({ visible: false });\n\n this._lastBoxInDrag.setAttribute('visible', false);\n // this._opt.editorEvent.setCursorSyncToTriggerLayer();\n };\n\n updateBoundsAndAngle(bounds: IAABBBoundsLike, angle: number) {\n // set bounds\n this.rect.setAttributes({\n x: bounds.x1,\n y: bounds.y1,\n width: bounds.x2 - bounds.x1,\n height: bounds.y2 - bounds.y1\n });\n\n // set anchor\n const x = (this.attribute.x ?? 0) + (bounds.x1 + bounds.x2) / 2;\n const y = (this.attribute.y ?? 0) + (bounds.y1 + bounds.y2) / 2;\n this.setAttributes({ anchor: [x, y], angle });\n }\n\n onActive() {\n this.initEvent();\n }\n\n initEvent() {\n // cursor\n this.editBorder.addEventListener('mousemove', this.handleMouseMove);\n this.addEventListener('pointerout', this.handleMouseOut);\n\n // drag\n this.addEventListener('pointerdown', this.handleDragMouseDown);\n this.addDrag();\n\n this.stage.addEventListener('pointermove', this.handleDragMouseMove);\n this.stage.addEventListener('pointerup', this.handleDragMouseUp);\n }\n\n protected handleMouseMove = (e: any) => {\n if (e.pickParams) {\n const { shadowTarget } = e.pickParams;\n this.setCursor(shadowTarget.attribute.cursor);\n } else {\n this.setCursor();\n }\n };\n\n protected handleMouseOut = (e: any) => {\n this.setCursor();\n };\n\n protected handleDragMouseDown = (e: any) => {\n this.isEditor = true;\n this.editStartCbs.forEach(cb => cb(e));\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n\n const { shadowTarget } = e.pickParams || {};\n // 开启move\n if (shadowTarget && this.stage) {\n this.setActiveGraphic(shadowTarget);\n this._rectBeforeScale = { ...this.rect.attribute };\n this._eventPosBeforeScale = layerPos;\n this.isDragging = true;\n this.dragStartAngle = this.attribute.angle ?? 0;\n } else {\n this.unTransStartCbs.forEach(cb => cb(e));\n this._dragger.startDrag(e);\n }\n };\n\n protected handleDragMouseMove = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = true;\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n\n const dx = layerPos.x - this.dragOffsetX;\n const dy = layerPos.y - this.dragOffsetY;\n\n if (dx === 0 && dy === 0) {\n return;\n }\n\n if (this.rotatable) {\n this.handleRotate(layerPos);\n this.dispatchUpdate(e);\n } else if (this.reshapeState) {\n this._handleReshape(dx, dy);\n this.dispatchUpdate(e);\n } else {\n this._handleScale(dx, dy, e);\n this.dispatchUpdate(e);\n }\n\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n };\n\n protected handleDragMouseUp = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = false;\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.setActiveGraphic(null);\n this.editEndCbs?.forEach(cb => cb(e));\n this.isEditor = false;\n this.isDragging = false;\n };\n\n protected setCursor(c?: string) {\n if (this.stage) {\n this.stage.setCursor(c);\n this._setCursor?.(c);\n }\n }\n\n protected setActiveGraphic(g: IGraphic | null) {\n this.activeGraphic = g;\n // 设置resize的方向\n let reset = true;\n if (g && g.name) {\n reset = false;\n const name = g.name;\n const dirList = name.split('-');\n const type = dirList.shift();\n if (type === 'scale') {\n if (dirList.length === 2) {\n this.horizontalResizble = dirList[0] === 'left' ? -1 : 1;\n this.verticalResizble = dirList[1] === 'top' ? -1 : 1;\n } else {\n const dir = dirList[0];\n const h = dir === 'left' || dir === 'right';\n this.horizontalResizble = h ? (dirList[0] === 'left' ? -1 : 1) : 0;\n this.verticalResizble = h ? 0 : dirList[0] === 'top' ? -1 : 1;\n }\n this.rotatable = 0;\n } else if (type === 'rotate') {\n this.rotatable = 1;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else if (type === 'reshape') {\n this.reshapeState = Number.parseInt(dirList[0], 10) + 1;\n this.rotatable = 0;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else {\n reset = true;\n }\n }\n if (reset) {\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.reshapeState = 0;\n }\n }\n\n // 非等比缩放\n protected handleScale(dx: number, dy: number) {\n const { anchor, x, y, width, height } = this._getRectWithOffset(dx, dy, this.rect.attribute).attribute;\n if (width < this.minSize.width) {\n return;\n }\n if (height < this.minSize.height) {\n return;\n }\n this.rect.setAttributes({\n width,\n height,\n x,\n y\n });\n this.setAttributes({\n anchor: anchor as [number | string, number | string]\n });\n }\n\n // 缩放\n private _handleScale(dx: number, dy: number, e: any) {\n if (this.proportionalScaling) {\n this._handleScaleProportional(dx, dy, e);\n } else {\n this.handleScale(dx, dy);\n }\n }\n\n // 等比缩放\n private _handleScaleProportional(dx: number, dy: number, e: any) {\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n const { attribute, temp } = this._getRectWithOffset(\n layerPos.x - this._eventPosBeforeScale.x,\n layerPos.y - this._eventPosBeforeScale.y,\n this._rectBeforeScale\n );\n\n const maxScale = Math.max(\n attribute.width / this._rectBeforeScale.width,\n attribute.height / this._rectBeforeScale.height\n );\n const finalWidth = this._rectBeforeScale.width * maxScale;\n const finalHeight = this._rectBeforeScale.height * maxScale;\n if (finalWidth < this.minSize.width) {\n return;\n }\n if (finalHeight < this.minSize.height) {\n return;\n }\n let nextP2 = temp.nextP2;\n const nextP1 = temp.nextP1;\n\n const angle = this.getAngle();\n // console.log('_handleScaleProportional', nextP1, nextP2, angle, this.verticalResizble, this.horizontalResizble);\n\n // v 1 h 1\n // 拖动的右下角 不需要改变\n if (this.verticalResizble > 0 && this.horizontalResizble > 0) {\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // 1 h -1\n // 拖动的左下角 以右上角为基准\n else if (this.verticalResizble > 0 && this.horizontalResizble < 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x + attribute.width * Math.cos(angle),\n y: nextP1.y + attribute.width * Math.sin(angle)\n };\n // final下的 p1 与 p2\n nextP1.x = lockPos.x - finalWidth * Math.cos(angle);\n nextP1.y = lockPos.y - finalWidth * Math.sin(angle);\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的右上角 以左下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble > 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x - attribute.height * Math.sin(angle),\n y: nextP1.y + attribute.height * Math.cos(angle)\n };\n // final下的 p1 与 p2\n (nextP1.x = lockPos.x + finalHeight * Math.sin(angle)), (nextP1.y = lockPos.y - finalHeight * Math.cos(angle));\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的左上角 以右下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble < 0) {\n // p2 锁定 ,计算 p1\n nextP1.x = nextP2.x - Math.cos(angle) * finalWidth + Math.sin(angle) * finalHeight;\n nextP1.y = nextP2.y - Math.sin(angle) * finalWidth - Math.cos(angle) * finalHeight;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n this.rect.setAttributes({\n width: finalWidth,\n height: finalHeight,\n x: center.x - finalWidth / 2,\n y: center.y - finalHeight / 2\n });\n this.setAttributes({\n anchor: [center.x, center.y]\n });\n }\n\n private _handleReshape(dx: number, dy: number) {\n const { width, height } = this.rect.attribute;\n const { shapePoints } = this.attribute;\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n if (!this.attribute.isShapePointAbsolute) {\n dx /= width;\n dy /= height;\n }\n const nextShapePoints = shapePoints.map((shapePoint, i) => {\n return i + 1 === this.reshapeState ? { x: shapePoint.x + dx, y: shapePoint.y + dy } : shapePoint;\n });\n this.setAttributes({\n shapePoints: nextShapePoints\n });\n }\n\n private _getRectWithOffset(dx: number, dy: number, lastAttribute: IRectGraphicAttribute) {\n // 投影得到旋转前的dx和dy\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n\n dx *= this.horizontalResizble;\n dy *= this.verticalResizble;\n\n const { x, y, width, height } = lastAttribute;\n\n const m = this.transMatrix;\n // 原始的x和y位置\n const nextP1 = {\n x: m.a * x + m.c * y + m.e,\n y: m.b * x + m.d * y + m.f\n };\n const nextP2 = {\n x: m.a * (x + width) + m.c * (y + height) + m.e,\n y: m.b * (x + width) + m.d * (y + height) + m.f\n };\n if (this.horizontalResizble < 0) {\n nextP1.x -= Math.cos(angle) * dx;\n nextP1.y -= Math.sin(angle) * dx;\n } else if (this.horizontalResizble > 0) {\n nextP2.x += Math.cos(angle) * dx;\n nextP2.y += Math.sin(angle) * dx;\n }\n\n if (this.verticalResizble < 0) {\n nextP1.x -= Math.cos(angle + pi / 2) * dy;\n nextP1.y -= Math.sin(angle + pi / 2) * dy;\n } else if (this.verticalResizble > 0) {\n nextP2.x += Math.cos(angle + pi / 2) * dy;\n nextP2.y += Math.sin(angle + pi / 2) * dy;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n\n const tw = width + dx;\n const th = height + dy;\n\n // 返回属性计算结果+当前计算过程的重要变量\n return {\n attribute: {\n width: tw,\n height: th,\n x: center.x - tw / 2,\n y: center.y - th / 2,\n anchor: [center.x, center.y]\n },\n temp: {\n nextP1,\n nextP2,\n dx,\n dy\n }\n };\n }\n\n private _getRectP2(p1: { x: number; y: number }, size: { width: number; height: number }, angle: number) {\n return {\n x: p1.x + Math.cos(angle) * size.width - Math.sin(angle) * size.height,\n y: p1.y + Math.sin(angle) * size.width + Math.cos(angle) * size.height\n };\n }\n\n protected handleRotate(currentPoint: { x: number; y: number }) {\n const originB = this.rectB;\n const cx = (originB.x1 + originB.x2) / 2;\n const cy = (originB.y1 + originB.y2) / 2;\n\n const vectorDrag = { x: this._eventPosBeforeScale.x - cx, y: this._eventPosBeforeScale.y - cy };\n const vectorCurrent = { x: currentPoint.x - cx, y: currentPoint.y - cy };\n const dot = vectorDrag.x * vectorCurrent.x + vectorDrag.y * vectorCurrent.y;\n const modDrag = Math.sqrt(vectorDrag.x ** 2 + vectorDrag.y ** 2);\n const modCurrent = Math.sqrt(vectorCurrent.x ** 2 + vectorCurrent.y ** 2);\n const cosAngle = dot / (modDrag * modCurrent);\n const cross = vectorDrag.x * vectorCurrent.y - vectorDrag.y * vectorCurrent.x;\n const delta = cross < 0 ? Math.PI * 2 - Math.acos(cosAngle) : Math.acos(cosAngle);\n\n this.setAttributes({\n angle: this.fixAngle(this.dragStartAngle + delta),\n anchor: [cx, cy]\n });\n }\n\n private fixAngle(angle: number) {\n angle = normalizeAngle(angle);\n for (const fixedAngle of fixedAngles) {\n if (angle >= fixedAngle - maxAngleDifference && angle <= fixedAngle + maxAngleDifference) {\n return fixedAngle;\n }\n }\n return angle;\n }\n\n getAngle(): number {\n if (!this.attribute.postMatrix) {\n return this.attribute.angle ?? 0;\n }\n const m = this.transMatrix;\n return Math.atan2(m.b, m.a);\n }\n\n protected render() {\n const {\n resizeBorder,\n padding,\n cornerRect,\n rotateCircle,\n rotatePath,\n handlerLine,\n shapeCircle,\n enabledAnchors = ['top', 'bottom', 'left-top', 'left-bottom', 'right', 'left', 'right-top', 'right-bottom'],\n shapePoints = [],\n isShapePointAbsolute\n } = this.attribute as TransformAttributes;\n\n const root = this.editBorder.shadowRoot;\n if (!root || this.count === 1) {\n return;\n }\n\n const parsedPadding = normalizePadding(padding as any);\n const { x = 0, y = 0, width: w = 0, height: h = 0 } = this.rect.attribute;\n this.rectB.setValue(x, y, x + w, y + h);\n\n const minX = x - parsedPadding[3];\n const minY = y - parsedPadding[0];\n const width = w + parsedPadding[1] + parsedPadding[3];\n const height = h + parsedPadding[0] + parsedPadding[2];\n\n borderAnchors.forEach((anchor, i) => {\n const enableResize = this._editorConfig.resize && enabledAnchors.includes(anchor as AnchorDirection);\n const item = anchorPositionMap[anchor];\n const cursor = enableResize ? anchorCursorMap[anchor] : 'default';\n root.createOrUpdateChild(\n enableResize ? `scale-${anchor}` : `stroke-line-${anchor}`,\n {\n x: minX,\n y: minY,\n points: [\n { x: item[0] * width, y: item[1] * height },\n { x: item[2] * width, y: item[3] * height }\n ],\n cursor,\n ...resizeBorder\n },\n 'line'\n );\n });\n\n if (this._editorConfig.rotate) {\n // 添加顶部\n root.createOrUpdateChild(\n 'top-handler-line',\n {\n x: minX + width / 2,\n y: minY,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: -handlerLine.size }\n ],\n ...handlerLine\n },\n 'line'\n );\n root.createOrUpdateChild(\n `rotate-all`,\n {\n x: minX + width / 2,\n y: minY - handlerLine.size - rotateCircle.radius,\n cursor: 'grab',\n ...rotateCircle\n },\n 'circle'\n );\n root.createOrUpdateChild(\n `path-rotate`,\n {\n pickable: false,\n x: minX + width / 2 + rotatePath.size / 2,\n y: minY - handlerLine.size + rotatePath.size / 2 - rotateCircle.radius,\n scaleX: rotatePath.size / 200,\n scaleY: rotatePath.size / 200,\n cursor: 'grab',\n dx: 0.5,\n dy: -0.5,\n ...rotatePath\n },\n 'path'\n );\n }\n\n // 添加锚点\n if (this._editorConfig.resize) {\n enabledAnchors.forEach((anchor: string) => {\n if (!cornerAnchors.includes(anchor)) {\n return;\n }\n const item = anchorPositionMap[anchor];\n const cursor = anchorCursorMap[anchor];\n root.createOrUpdateChild(\n `scale-${anchor}`,\n {\n x: minX + item[0] * width - cornerRect.width! / 2,\n y: minY + item[1] * height - cornerRect.height! / 2,\n cursor,\n ...cornerRect\n },\n 'rect'\n );\n });\n }\n\n if (this._editorConfig.reshape) {\n const shapePointsChildren = root.children.filter((child: any) => child.name.startsWith('reshape'));\n if (shapePointsChildren.length !== shapePoints.length) {\n shapePointsChildren.forEach((child: any) => root.removeChild(child));\n }\n shapePoints.forEach((point, i) => {\n root.createOrUpdateChild(\n `reshape-${i}`,\n {\n x: isShapePointAbsolute ? point.x : point.x * w + x,\n y: isShapePointAbsolute ? point.y : point.y * h + y,\n cursor: 'move',\n ...shapeCircle\n },\n 'circle'\n );\n });\n }\n }\n\n moveBy(dx: number, dy: number): this {\n const { x, y, width, height } = this.rect.attribute;\n this.rect.setAttributes({\n width: width,\n height: height,\n x: x + dx,\n y: y + dy\n });\n this.setAttributes({\n anchor: [x + dx + width / 2, y + dy + height / 2]\n });\n this.dispatchUpdate();\n return this;\n }\n\n dispatchUpdate(e?: any) {\n const out = this.getTransformAttribute();\n this.updateCbs.forEach(cb => {\n const data = cb(out, e);\n if (data) {\n const { x, y, width, height, anchor, angle, shapePoints } = data;\n Number.isFinite(x) && this.rect.setAttribute('x', x);\n Number.isFinite(y) && this.rect.setAttribute('y', y);\n Number.isFinite(width) && this.rect.setAttribute('width', width);\n Number.isFinite(height) && this.rect.setAttribute('height', height);\n anchor && this.setAttribute('anchor', anchor);\n Number.isFinite(angle) && this.setAttribute('angle', angle);\n shapePoints && this.setAttribute('shapePoints', shapePoints);\n }\n });\n }\n\n onUpdate(cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) {\n this.updateCbs.push(cb);\n }\n\n onEditorEnd(cb: (event?: VRenderPointerEvent) => void) {\n this.editEndCbs.push(cb);\n }\n onEditorStart(cb: (event?: VRenderPointerEvent) => void) {\n this.editStartCbs.push(cb);\n }\n onUnTransStart(cb: (event: PointerEvent) => void) {\n this.unTransStartCbs.push(cb);\n }\n\n addChildUpdateBoundTag() {\n super.addChildUpdateBoundTag();\n\n // 如果wrap内的内容bounds变化,那就需要重新调用render\n if (this.runningAddChildUpdateBoundTag) {\n return;\n }\n this.runningAddChildUpdateBoundTag = true;\n\n this.render();\n\n this.runningAddChildUpdateBoundTag = false;\n }\n\n getTransformAttribute() {\n const { x, y, width, height } = this.rect.attribute;\n const { angle, anchor, shapePoints } = this.attribute;\n return {\n x,\n y,\n width,\n height,\n angle,\n anchor,\n shapePoints\n };\n }\n\n releaseEvent() {\n this.editBorder.removeEventListener('mousemove', this.handleMouseMove);\n if (this.stage) {\n this.stage.removeEventListener('pointermove', this.handleDragMouseMove);\n this.stage.removeEventListener('pointerup', this.handleDragMouseUp);\n }\n this.removeEventListener('pointerout', this.handleMouseOut);\n this.removeEventListener('pointerdown', this.handleDragMouseDown);\n }\n\n releaseDragger() {\n if (!this._dragger) {\n return;\n }\n this._dragger.release();\n }\n\n private _isRelease = false;\n release(): void {\n this._isRelease = true;\n // event\n this.releaseEvent();\n\n this.parent.removeChild(this);\n this.editBorder = null;\n this.updateCbs = [];\n this.editEndCbs = [];\n this.unTransStartCbs = [];\n super.release();\n }\n}\n"]}
|
|
@@ -5,6 +5,7 @@ export declare class DragComponent {
|
|
|
5
5
|
set state(state: 'startDrag' | 'dragging' | 'stopDrag' | 'none');
|
|
6
6
|
private _lastPosX;
|
|
7
7
|
private _lastPosY;
|
|
8
|
+
private _stage;
|
|
8
9
|
constructor(stage: IStage);
|
|
9
10
|
protected _dragHandler: (moveX: number, moveY: number) => void;
|
|
10
11
|
protected _dragEndHandler: () => void;
|
|
@@ -21,7 +21,8 @@ class DragComponent {
|
|
|
21
21
|
var _a, _b;
|
|
22
22
|
"dragging" === this._state || "startDrag" === this._state ? (this._state = "stopDrag",
|
|
23
23
|
this._state = "stopDrag", null === (_b = this._dragEndHandler) || void 0 === _b || _b.call(this)) : null === (_a = this._unDragEndHandler) || void 0 === _a || _a.call(this);
|
|
24
|
-
},
|
|
24
|
+
}, this._stage = stage, stage.addEventListener("pointermove", this.pointerMove, !0),
|
|
25
|
+
stage.addEventListener("pointerup", this.stopDrag, !0);
|
|
25
26
|
}
|
|
26
27
|
dragHandler(handler) {
|
|
27
28
|
this._dragHandler = handler;
|
|
@@ -36,7 +37,8 @@ class DragComponent {
|
|
|
36
37
|
this._state = "startDrag", this._lastPosX = event.clientX, this._lastPosY = event.clientY;
|
|
37
38
|
}
|
|
38
39
|
release() {
|
|
39
|
-
|
|
40
|
+
this._stage && (this._stage.removeEventListener("pointermove", this.pointerMove, !0),
|
|
41
|
+
this._stage.removeEventListener("pointerup", this.stopDrag, !0), this._stage = null),
|
|
40
42
|
this._dragHandler = null, this._dragEndHandler = null;
|
|
41
43
|
}
|
|
42
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/edit/edit-component/edit-control/transform-drag.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAExB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,KAAqD;QAC7D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/edit/edit-component/edit-control/transform-drag.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAExB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,KAAqD;QAC7D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAOD,YAAY,KAAa;QAbjB,WAAM,GAAmD,MAAM,CAAC;QAuBxE,gBAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;;YACpC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE;gBAChE,OAAO;aACR;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;gBAC9B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;aAC1B;YACD,MAAA,IAAI,CAAC,YAAY,qDAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC;QAkBF,aAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE;;YACjC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;gBAC7D,MAAA,IAAI,CAAC,iBAAiB,oDAAI,CAAC;gBAC3B,OAAO;aACR;YAED,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YAIzB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YACzB,MAAA,IAAI,CAAC,eAAe,oDAAI,CAAC;QAC3B,CAAC,CAAC;QAjDA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9D,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAkBD,WAAW,CAAC,OAA+C;QACzD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IACD,cAAc,CAAC,OAAmB;QAChC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IACD,gBAAgB,CAAC,OAAmB;QAClC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,KAAmB;QAC3B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;IACjC,CAAC;IAgBD,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;CACF;AA3ED,sCA2EC","file":"transform-drag.js","sourcesContent":["import type { IStage } from '@visactor/vrender';\n\nexport class DragComponent {\n private _state: 'startDrag' | 'dragging' | 'stopDrag' | 'none' = 'none';\n get state() {\n return this._state;\n }\n set state(state: 'startDrag' | 'dragging' | 'stopDrag' | 'none') {\n this._state = state;\n }\n\n private _lastPosX: number;\n private _lastPosY: number;\n private _stage: IStage;\n // protected _container: HTMLElement;\n\n constructor(stage: IStage) {\n this._stage = stage;\n stage.addEventListener('pointermove', this.pointerMove, true);\n stage.addEventListener('pointerup', this.stopDrag, true);\n }\n\n protected _dragHandler: (moveX: number, moveY: number) => void;\n protected _dragEndHandler: () => void;\n protected _unDragEndHandler: () => void;\n\n pointerMove = (event: PointerEvent) => {\n if (!(this._state === 'startDrag' || this._state === 'dragging')) {\n return;\n }\n if (this._state !== 'dragging') {\n this._state = 'dragging';\n }\n this._dragHandler?.(event.clientX - this._lastPosX, event.clientY - this._lastPosY);\n this._lastPosX = event.clientX;\n this._lastPosY = event.clientY;\n };\n\n dragHandler(handler: (moveX: number, moveY: number) => void) {\n this._dragHandler = handler;\n }\n dragEndHandler(handler: () => void) {\n this._dragEndHandler = handler;\n }\n unDragEndHandler(handler: () => void) {\n this._unDragEndHandler = handler;\n }\n\n startDrag(event: PointerEvent) {\n this._state = 'startDrag';\n this._lastPosX = event.clientX;\n this._lastPosY = event.clientY;\n }\n\n stopDrag = (event: PointerEvent) => {\n if (this._state !== 'dragging' && this._state !== 'startDrag') {\n this._unDragEndHandler?.();\n return;\n }\n // const lastState = this._state;\n this._state = 'stopDrag';\n // if (lastState !== 'dragging') {\n // return;\n // }\n this._state = 'stopDrag';\n this._dragEndHandler?.();\n };\n\n release() {\n if (this._stage) {\n this._stage.removeEventListener('pointermove', this.pointerMove, true);\n this._stage.removeEventListener('pointerup', this.stopDrag, true);\n this._stage = null;\n }\n this._dragHandler = null;\n this._dragEndHandler = null;\n }\n}\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { type IEditComponent } from '../interface';
|
|
2
|
-
import type { ITransformControl, TransformAttributes } from './edit-control/transform-control';
|
|
3
2
|
import { RectSelection } from './rect-selection';
|
|
4
3
|
export declare class ImageSelection extends RectSelection implements IEditComponent {
|
|
5
4
|
readonly level = 3;
|
|
6
5
|
readonly type: string;
|
|
7
|
-
|
|
6
|
+
readonly editCharacterType: string;
|
|
8
7
|
}
|
|
@@ -4,16 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.ImageSelection = void 0;
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const character_1 = require("../../constants/character"), rect_selection_1 = require("./rect-selection");
|
|
8
8
|
|
|
9
9
|
class ImageSelection extends rect_selection_1.RectSelection {
|
|
10
10
|
constructor() {
|
|
11
|
-
super(...arguments), this.level = 3, this.type = "image";
|
|
12
|
-
}
|
|
13
|
-
_createLayoutComponent(attributes) {
|
|
14
|
-
return new transform_control_1.TransformControl(this, attributes);
|
|
11
|
+
super(...arguments), this.level = 3, this.type = "image", this.editCharacterType = character_1.StoryComponentType.IMAGE;
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
14
|
|
|
18
15
|
exports.ImageSelection = ImageSelection;
|
|
19
|
-
//# sourceMappingURL=image-selection.js.map
|
|
16
|
+
//# sourceMappingURL=image-selection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/edit/edit-component/image-selection.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/edit/edit-component/image-selection.ts"],"names":[],"mappings":";;;AAAA,yDAA+D;AAK/D,qDAAiD;AAEjD,MAAa,cAAe,SAAQ,8BAAa;IAAjD;;QACW,UAAK,GAAG,CAAC,CAAC;QACV,SAAI,GAAW,OAAO,CAAC;QACvB,sBAAiB,GAAW,8BAAkB,CAAC,KAAK,CAAC;IAKhE,CAAC;CAAA;AARD,wCAQC","file":"image-selection.js","sourcesContent":["import { StoryComponentType } from '../../constants/character';\nimport { type IEditComponent } from '../interface';\nimport { BaseSelection } from './base-selection';\nimport type { ITransformControl, TransformAttributes } from './edit-control/transform-control';\nimport { TransformControl } from './edit-control/transform-control';\nimport { RectSelection } from './rect-selection';\n\nexport class ImageSelection extends RectSelection implements IEditComponent {\n readonly level = 3;\n readonly type: string = 'image';\n readonly editCharacterType: string = StoryComponentType.IMAGE;\n\n // protected _createLayoutComponent(attributes: Partial<TransformAttributes>): ITransformControl {\n // return new TransformControl(this, attributes);\n // }\n}\n"]}
|
|
@@ -4,13 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.loadAllSelection = void 0;
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const box_selection_1 = require("./box-selection"), image_selection_1 = require("./image-selection"), rect_selection_1 = require("./rect-selection"), chart_selection_1 = require("./chart-selection"), edit_1 = require("../edit"), shape_selection_1 = require("./shape-selection");
|
|
8
8
|
|
|
9
9
|
function loadAllSelection() {
|
|
10
|
-
edit_1.Edit.registerEditComponent("
|
|
11
|
-
edit_1.Edit.registerEditComponent("
|
|
12
|
-
edit_1.Edit.registerEditComponent("
|
|
13
|
-
edit_1.Edit.registerEditComponent("image-selection", image_selection_1.ImageSelection);
|
|
10
|
+
edit_1.Edit.registerEditComponent("rect", rect_selection_1.RectSelection), edit_1.Edit.registerEditComponent("image", image_selection_1.ImageSelection),
|
|
11
|
+
edit_1.Edit.registerEditComponent("shape", shape_selection_1.ShapeSelection), edit_1.Edit.registerEditComponent("chart", chart_selection_1.ChartSelection),
|
|
12
|
+
edit_1.Edit.registerEditComponent("box-selection", box_selection_1.BoxSelection);
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
exports.loadAllSelection = loadAllSelection;
|