ding-image-editor 3.15.3
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 +193 -0
- package/dist/svg/icon-a.svg +376 -0
- package/dist/svg/icon-b.svg +369 -0
- package/dist/svg/icon-c.svg +369 -0
- package/dist/svg/icon-d.svg +369 -0
- package/dist/tui-image-editor.css +6 -0
- package/dist/tui-image-editor.js +62329 -0
- package/dist/tui-image-editor.min.css +5 -0
- package/dist/tui-image-editor.min.js +15 -0
- package/index.d.ts +334 -0
- package/package.json +52 -0
- package/src/css/buttons.styl +102 -0
- package/src/css/checkbox.styl +86 -0
- package/src/css/colorpicker.styl +98 -0
- package/src/css/gridtable.styl +45 -0
- package/src/css/icon.styl +44 -0
- package/src/css/index.styl +17 -0
- package/src/css/main.styl +163 -0
- package/src/css/position.styl +309 -0
- package/src/css/range.styl +91 -0
- package/src/css/submenu.styl +168 -0
- package/src/index.js +29 -0
- package/src/js/action.js +686 -0
- package/src/js/command/addIcon.js +42 -0
- package/src/js/command/addImageObject.js +34 -0
- package/src/js/command/addObject.js +43 -0
- package/src/js/command/addShape.js +51 -0
- package/src/js/command/addText.js +73 -0
- package/src/js/command/applyFilter.js +95 -0
- package/src/js/command/changeIconColor.js +48 -0
- package/src/js/command/changeSelection.js +31 -0
- package/src/js/command/changeShape.js +84 -0
- package/src/js/command/changeText.js +44 -0
- package/src/js/command/changeTextStyle.js +80 -0
- package/src/js/command/clearObjects.js +33 -0
- package/src/js/command/flip.js +36 -0
- package/src/js/command/loadImage.js +58 -0
- package/src/js/command/removeFilter.js +38 -0
- package/src/js/command/removeObject.js +37 -0
- package/src/js/command/resize.js +41 -0
- package/src/js/command/resizeCanvasDimension.js +40 -0
- package/src/js/command/rotate.js +64 -0
- package/src/js/command/setObjectPosition.js +50 -0
- package/src/js/command/setObjectProperties.js +55 -0
- package/src/js/component/cropper.js +407 -0
- package/src/js/component/filter.js +229 -0
- package/src/js/component/flip.js +146 -0
- package/src/js/component/freeDrawing.js +144 -0
- package/src/js/component/icon.js +246 -0
- package/src/js/component/imageLoader.js +84 -0
- package/src/js/component/line.js +205 -0
- package/src/js/component/resize.js +103 -0
- package/src/js/component/rotation.js +91 -0
- package/src/js/component/shape.js +601 -0
- package/src/js/component/text.js +572 -0
- package/src/js/component/zoom.js +708 -0
- package/src/js/consts.js +404 -0
- package/src/js/drawingMode/cropper.js +35 -0
- package/src/js/drawingMode/freeDrawing.js +36 -0
- package/src/js/drawingMode/icon.js +35 -0
- package/src/js/drawingMode/lineDrawing.js +36 -0
- package/src/js/drawingMode/resize.js +35 -0
- package/src/js/drawingMode/shape.js +35 -0
- package/src/js/drawingMode/text.js +35 -0
- package/src/js/drawingMode/zoom.js +37 -0
- package/src/js/extension/arrowLine.js +172 -0
- package/src/js/extension/blur.js +29 -0
- package/src/js/extension/colorFilter.js +104 -0
- package/src/js/extension/cropzone.js +568 -0
- package/src/js/extension/emboss.js +29 -0
- package/src/js/extension/mask.js +90 -0
- package/src/js/extension/sharpen.js +29 -0
- package/src/js/factory/command.js +36 -0
- package/src/js/factory/errorMessage.js +27 -0
- package/src/js/graphics.js +1539 -0
- package/src/js/helper/imagetracer.js +1396 -0
- package/src/js/helper/selectionModifyHelper.js +86 -0
- package/src/js/helper/shapeFilterFillHelper.js +564 -0
- package/src/js/helper/shapeResizeHelper.js +237 -0
- package/src/js/imageEditor.js +1795 -0
- package/src/js/interface/command.js +131 -0
- package/src/js/interface/component.js +127 -0
- package/src/js/interface/drawingMode.js +47 -0
- package/src/js/invoker.js +292 -0
- package/src/js/polyfill.js +498 -0
- package/src/js/ui/crop.js +139 -0
- package/src/js/ui/draw.js +187 -0
- package/src/js/ui/filter.js +510 -0
- package/src/js/ui/flip.js +87 -0
- package/src/js/ui/history.js +171 -0
- package/src/js/ui/icon.js +191 -0
- package/src/js/ui/locale/locale.js +19 -0
- package/src/js/ui/mask.js +96 -0
- package/src/js/ui/panelMenu.js +130 -0
- package/src/js/ui/resize.js +241 -0
- package/src/js/ui/rotate.js +123 -0
- package/src/js/ui/shape.js +265 -0
- package/src/js/ui/submenuBase.js +122 -0
- package/src/js/ui/template/controls.js +21 -0
- package/src/js/ui/template/mainContainer.js +38 -0
- package/src/js/ui/template/style.js +146 -0
- package/src/js/ui/template/submenu/crop.js +73 -0
- package/src/js/ui/template/submenu/draw.js +42 -0
- package/src/js/ui/template/submenu/filter.js +157 -0
- package/src/js/ui/template/submenu/flip.js +41 -0
- package/src/js/ui/template/submenu/history.js +22 -0
- package/src/js/ui/template/submenu/icon.js +108 -0
- package/src/js/ui/template/submenu/mask.js +30 -0
- package/src/js/ui/template/submenu/resize.js +54 -0
- package/src/js/ui/template/submenu/rotate.js +32 -0
- package/src/js/ui/template/submenu/shape.js +45 -0
- package/src/js/ui/template/submenu/text.js +67 -0
- package/src/js/ui/template/submenu/zoom.js +41 -0
- package/src/js/ui/text.js +279 -0
- package/src/js/ui/theme/standard.js +220 -0
- package/src/js/ui/theme/theme.js +249 -0
- package/src/js/ui/tools/colorpicker.js +250 -0
- package/src/js/ui/tools/range.js +390 -0
- package/src/js/ui.js +858 -0
- package/src/js/util.js +551 -0
- package/src/svg/default.svg +335 -0
- package/src/svg/icon-a/ic-apply.svg +6 -0
- package/src/svg/icon-a/ic-cancel.svg +6 -0
- package/src/svg/icon-a/ic-color-transparent-w.svg +12 -0
- package/src/svg/icon-a/ic-crop.svg +7 -0
- package/src/svg/icon-a/ic-delete-all.svg +6 -0
- package/src/svg/icon-a/ic-delete.svg +6 -0
- package/src/svg/icon-a/ic-draw-free.svg +5 -0
- package/src/svg/icon-a/ic-draw-line.svg +5 -0
- package/src/svg/icon-a/ic-draw.svg +6 -0
- package/src/svg/icon-a/ic-filter.svg +7 -0
- package/src/svg/icon-a/ic-flip-reset.svg +7 -0
- package/src/svg/icon-a/ic-flip-x.svg +6 -0
- package/src/svg/icon-a/ic-flip-y.svg +6 -0
- package/src/svg/icon-a/ic-flip.svg +6 -0
- package/src/svg/icon-a/ic-history-check.svg +5 -0
- package/src/svg/icon-a/ic-history-crop.svg +7 -0
- package/src/svg/icon-a/ic-history-delete.svg +9 -0
- package/src/svg/icon-a/ic-history-draw.svg +7 -0
- package/src/svg/icon-a/ic-history-filter.svg +8 -0
- package/src/svg/icon-a/ic-history-flip.svg +6 -0
- package/src/svg/icon-a/ic-history-group.svg +9 -0
- package/src/svg/icon-a/ic-history-icon.svg +6 -0
- package/src/svg/icon-a/ic-history-load.svg +7 -0
- package/src/svg/icon-a/ic-history-mask.svg +9 -0
- package/src/svg/icon-a/ic-history-resize.svg +12 -0
- package/src/svg/icon-a/ic-history-rotate.svg +16 -0
- package/src/svg/icon-a/ic-history-shape.svg +7 -0
- package/src/svg/icon-a/ic-history-text.svg +8 -0
- package/src/svg/icon-a/ic-history.svg +6 -0
- package/src/svg/icon-a/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-a/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-a/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-a/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-a/ic-icon-heart.svg +5 -0
- package/src/svg/icon-a/ic-icon-load.svg +8 -0
- package/src/svg/icon-a/ic-icon-location.svg +8 -0
- package/src/svg/icon-a/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-a/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-a/ic-icon-star.svg +5 -0
- package/src/svg/icon-a/ic-icon.svg +5 -0
- package/src/svg/icon-a/ic-mask-load.svg +8 -0
- package/src/svg/icon-a/ic-mask.svg +6 -0
- package/src/svg/icon-a/ic-redo.svg +7 -0
- package/src/svg/icon-a/ic-reset.svg +7 -0
- package/src/svg/icon-a/ic-resize.svg +13 -0
- package/src/svg/icon-a/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-a/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-a/ic-rotate.svg +7 -0
- package/src/svg/icon-a/ic-shape-circle.svg +5 -0
- package/src/svg/icon-a/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-a/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-a/ic-shape.svg +6 -0
- package/src/svg/icon-a/ic-text-align-center.svg +6 -0
- package/src/svg/icon-a/ic-text-align-left.svg +6 -0
- package/src/svg/icon-a/ic-text-align-right.svg +6 -0
- package/src/svg/icon-a/ic-text-bold.svg +7 -0
- package/src/svg/icon-a/ic-text-italic.svg +6 -0
- package/src/svg/icon-a/ic-text-underline.svg +7 -0
- package/src/svg/icon-a/ic-text.svg +7 -0
- package/src/svg/icon-a/ic-undo.svg +7 -0
- package/src/svg/icon-a/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-a/ic-zoom-zoom-in.svg +10 -0
- package/src/svg/icon-a/ic-zoom-zoom-out.svg +9 -0
- package/src/svg/icon-a/img-bi.svg +5 -0
- package/src/svg/icon-b/ic-apply.svg +6 -0
- package/src/svg/icon-b/ic-cancel.svg +6 -0
- package/src/svg/icon-b/ic-crop.svg +7 -0
- package/src/svg/icon-b/ic-delete-all.svg +6 -0
- package/src/svg/icon-b/ic-delete.svg +6 -0
- package/src/svg/icon-b/ic-draw-free.svg +5 -0
- package/src/svg/icon-b/ic-draw-line.svg +5 -0
- package/src/svg/icon-b/ic-draw.svg +6 -0
- package/src/svg/icon-b/ic-filter.svg +7 -0
- package/src/svg/icon-b/ic-flip-reset.svg +7 -0
- package/src/svg/icon-b/ic-flip-x.svg +6 -0
- package/src/svg/icon-b/ic-flip-y.svg +6 -0
- package/src/svg/icon-b/ic-flip.svg +6 -0
- package/src/svg/icon-b/ic-history-check.svg +5 -0
- package/src/svg/icon-b/ic-history-crop.svg +7 -0
- package/src/svg/icon-b/ic-history-delete.svg +9 -0
- package/src/svg/icon-b/ic-history-draw.svg +7 -0
- package/src/svg/icon-b/ic-history-filter.svg +8 -0
- package/src/svg/icon-b/ic-history-flip.svg +6 -0
- package/src/svg/icon-b/ic-history-group.svg +9 -0
- package/src/svg/icon-b/ic-history-icon.svg +6 -0
- package/src/svg/icon-b/ic-history-load.svg +7 -0
- package/src/svg/icon-b/ic-history-mask.svg +9 -0
- package/src/svg/icon-b/ic-history-resize.svg +12 -0
- package/src/svg/icon-b/ic-history-rotate.svg +16 -0
- package/src/svg/icon-b/ic-history-shape.svg +7 -0
- package/src/svg/icon-b/ic-history-text.svg +8 -0
- package/src/svg/icon-b/ic-history.svg +6 -0
- package/src/svg/icon-b/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-b/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-b/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-b/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-b/ic-icon-heart.svg +5 -0
- package/src/svg/icon-b/ic-icon-load.svg +8 -0
- package/src/svg/icon-b/ic-icon-location.svg +8 -0
- package/src/svg/icon-b/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-b/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-b/ic-icon-star.svg +5 -0
- package/src/svg/icon-b/ic-icon.svg +5 -0
- package/src/svg/icon-b/ic-mask-load.svg +8 -0
- package/src/svg/icon-b/ic-mask.svg +6 -0
- package/src/svg/icon-b/ic-redo.svg +7 -0
- package/src/svg/icon-b/ic-reset.svg +7 -0
- package/src/svg/icon-b/ic-resize.svg +13 -0
- package/src/svg/icon-b/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-b/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-b/ic-rotate.svg +7 -0
- package/src/svg/icon-b/ic-shape-circle.svg +5 -0
- package/src/svg/icon-b/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-b/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-b/ic-shape.svg +6 -0
- package/src/svg/icon-b/ic-text-align-center.svg +6 -0
- package/src/svg/icon-b/ic-text-align-left.svg +6 -0
- package/src/svg/icon-b/ic-text-align-right.svg +6 -0
- package/src/svg/icon-b/ic-text-bold.svg +7 -0
- package/src/svg/icon-b/ic-text-italic.svg +6 -0
- package/src/svg/icon-b/ic-text-underline.svg +7 -0
- package/src/svg/icon-b/ic-text.svg +7 -0
- package/src/svg/icon-b/ic-undo.svg +7 -0
- package/src/svg/icon-b/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-b/ic-zoom-zoom-in.svg +12 -0
- package/src/svg/icon-b/ic-zoom-zoom-out.svg +11 -0
- package/src/svg/icon-b/img-bi.svg +5 -0
- package/src/svg/icon-c/ic-apply.svg +6 -0
- package/src/svg/icon-c/ic-cancel.svg +6 -0
- package/src/svg/icon-c/ic-crop.svg +7 -0
- package/src/svg/icon-c/ic-delete-all.svg +6 -0
- package/src/svg/icon-c/ic-delete.svg +6 -0
- package/src/svg/icon-c/ic-draw-free.svg +5 -0
- package/src/svg/icon-c/ic-draw-line.svg +5 -0
- package/src/svg/icon-c/ic-draw.svg +6 -0
- package/src/svg/icon-c/ic-filter.svg +7 -0
- package/src/svg/icon-c/ic-flip-reset.svg +7 -0
- package/src/svg/icon-c/ic-flip-x.svg +6 -0
- package/src/svg/icon-c/ic-flip-y.svg +6 -0
- package/src/svg/icon-c/ic-flip.svg +6 -0
- package/src/svg/icon-c/ic-history-check.svg +5 -0
- package/src/svg/icon-c/ic-history-crop.svg +7 -0
- package/src/svg/icon-c/ic-history-delete.svg +9 -0
- package/src/svg/icon-c/ic-history-draw.svg +7 -0
- package/src/svg/icon-c/ic-history-filter.svg +8 -0
- package/src/svg/icon-c/ic-history-flip.svg +6 -0
- package/src/svg/icon-c/ic-history-group.svg +9 -0
- package/src/svg/icon-c/ic-history-icon.svg +6 -0
- package/src/svg/icon-c/ic-history-load.svg +7 -0
- package/src/svg/icon-c/ic-history-mask.svg +9 -0
- package/src/svg/icon-c/ic-history-resize.svg +12 -0
- package/src/svg/icon-c/ic-history-rotate.svg +16 -0
- package/src/svg/icon-c/ic-history-shape.svg +7 -0
- package/src/svg/icon-c/ic-history-text.svg +8 -0
- package/src/svg/icon-c/ic-history.svg +6 -0
- package/src/svg/icon-c/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-c/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-c/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-c/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-c/ic-icon-heart.svg +5 -0
- package/src/svg/icon-c/ic-icon-load.svg +8 -0
- package/src/svg/icon-c/ic-icon-location.svg +8 -0
- package/src/svg/icon-c/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-c/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-c/ic-icon-star.svg +5 -0
- package/src/svg/icon-c/ic-icon.svg +5 -0
- package/src/svg/icon-c/ic-mask-load.svg +8 -0
- package/src/svg/icon-c/ic-mask.svg +6 -0
- package/src/svg/icon-c/ic-redo.svg +7 -0
- package/src/svg/icon-c/ic-reset.svg +7 -0
- package/src/svg/icon-c/ic-resize.svg +13 -0
- package/src/svg/icon-c/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-c/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-c/ic-rotate.svg +7 -0
- package/src/svg/icon-c/ic-shape-circle.svg +5 -0
- package/src/svg/icon-c/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-c/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-c/ic-shape.svg +6 -0
- package/src/svg/icon-c/ic-text-align-center.svg +6 -0
- package/src/svg/icon-c/ic-text-align-left.svg +6 -0
- package/src/svg/icon-c/ic-text-align-right.svg +6 -0
- package/src/svg/icon-c/ic-text-bold.svg +7 -0
- package/src/svg/icon-c/ic-text-italic.svg +6 -0
- package/src/svg/icon-c/ic-text-underline.svg +7 -0
- package/src/svg/icon-c/ic-text.svg +7 -0
- package/src/svg/icon-c/ic-undo.svg +7 -0
- package/src/svg/icon-c/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-c/ic-zoom-zoom-in.svg +12 -0
- package/src/svg/icon-c/ic-zoom-zoom-out.svg +11 -0
- package/src/svg/icon-c/img-bi.svg +5 -0
- package/src/svg/icon-d/ic-apply.svg +6 -0
- package/src/svg/icon-d/ic-cancel.svg +6 -0
- package/src/svg/icon-d/ic-crop.svg +7 -0
- package/src/svg/icon-d/ic-delete-all.svg +6 -0
- package/src/svg/icon-d/ic-delete.svg +6 -0
- package/src/svg/icon-d/ic-draw-free.svg +5 -0
- package/src/svg/icon-d/ic-draw-line.svg +5 -0
- package/src/svg/icon-d/ic-draw.svg +6 -0
- package/src/svg/icon-d/ic-filter.svg +7 -0
- package/src/svg/icon-d/ic-flip-reset.svg +7 -0
- package/src/svg/icon-d/ic-flip-x.svg +6 -0
- package/src/svg/icon-d/ic-flip-y.svg +6 -0
- package/src/svg/icon-d/ic-flip.svg +6 -0
- package/src/svg/icon-d/ic-history-check.svg +5 -0
- package/src/svg/icon-d/ic-history-crop.svg +7 -0
- package/src/svg/icon-d/ic-history-delete.svg +9 -0
- package/src/svg/icon-d/ic-history-draw.svg +7 -0
- package/src/svg/icon-d/ic-history-filter.svg +8 -0
- package/src/svg/icon-d/ic-history-flip.svg +6 -0
- package/src/svg/icon-d/ic-history-group.svg +9 -0
- package/src/svg/icon-d/ic-history-icon.svg +6 -0
- package/src/svg/icon-d/ic-history-load.svg +7 -0
- package/src/svg/icon-d/ic-history-mask.svg +9 -0
- package/src/svg/icon-d/ic-history-resize.svg +12 -0
- package/src/svg/icon-d/ic-history-rotate.svg +16 -0
- package/src/svg/icon-d/ic-history-shape.svg +7 -0
- package/src/svg/icon-d/ic-history-text.svg +8 -0
- package/src/svg/icon-d/ic-history.svg +6 -0
- package/src/svg/icon-d/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-d/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-d/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-d/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-d/ic-icon-heart.svg +5 -0
- package/src/svg/icon-d/ic-icon-load.svg +8 -0
- package/src/svg/icon-d/ic-icon-location.svg +8 -0
- package/src/svg/icon-d/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-d/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-d/ic-icon-star.svg +5 -0
- package/src/svg/icon-d/ic-icon.svg +5 -0
- package/src/svg/icon-d/ic-mask-load.svg +8 -0
- package/src/svg/icon-d/ic-mask.svg +6 -0
- package/src/svg/icon-d/ic-redo.svg +7 -0
- package/src/svg/icon-d/ic-reset.svg +7 -0
- package/src/svg/icon-d/ic-resize.svg +13 -0
- package/src/svg/icon-d/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-d/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-d/ic-rotate.svg +7 -0
- package/src/svg/icon-d/ic-shape-circle.svg +5 -0
- package/src/svg/icon-d/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-d/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-d/ic-shape.svg +6 -0
- package/src/svg/icon-d/ic-text-align-center.svg +6 -0
- package/src/svg/icon-d/ic-text-align-left.svg +6 -0
- package/src/svg/icon-d/ic-text-align-right.svg +6 -0
- package/src/svg/icon-d/ic-text-bold.svg +7 -0
- package/src/svg/icon-d/ic-text-italic.svg +6 -0
- package/src/svg/icon-d/ic-text-underline.svg +7 -0
- package/src/svg/icon-d/ic-text.svg +7 -0
- package/src/svg/icon-d/ic-undo.svg +7 -0
- package/src/svg/icon-d/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-d/ic-zoom-zoom-in.svg +12 -0
- package/src/svg/icon-d/ic-zoom-zoom-out.svg +11 -0
- package/src/svg/icon-d/img-bi.svg +5 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { componentNames, commandNames } from '@/consts';
|
3
|
+
|
4
|
+
const { ICON } = componentNames;
|
5
|
+
|
6
|
+
const command = {
|
7
|
+
name: commandNames.ADD_ICON,
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Add an icon
|
11
|
+
* @param {Graphics} graphics - Graphics instance
|
12
|
+
* @param {string} type - Icon type ('arrow', 'cancel', custom icon name)
|
13
|
+
* @param {Object} options - Icon options
|
14
|
+
* @param {string} [options.fill] - Icon foreground color
|
15
|
+
* @param {string} [options.left] - Icon x position
|
16
|
+
* @param {string} [options.top] - Icon y position
|
17
|
+
* @returns {Promise}
|
18
|
+
*/
|
19
|
+
execute(graphics, type, options) {
|
20
|
+
const iconComp = graphics.getComponent(ICON);
|
21
|
+
|
22
|
+
return iconComp.add(type, options).then((objectProps) => {
|
23
|
+
this.undoData.object = graphics.getObject(objectProps.id);
|
24
|
+
|
25
|
+
return objectProps;
|
26
|
+
});
|
27
|
+
},
|
28
|
+
|
29
|
+
/**
|
30
|
+
* @param {Graphics} graphics - Graphics instance
|
31
|
+
* @returns {Promise}
|
32
|
+
*/
|
33
|
+
undo(graphics) {
|
34
|
+
graphics.remove(this.undoData.object);
|
35
|
+
|
36
|
+
return Promise.resolve();
|
37
|
+
},
|
38
|
+
};
|
39
|
+
|
40
|
+
commandFactory.register(command);
|
41
|
+
|
42
|
+
export default command;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { commandNames } from '@/consts';
|
3
|
+
|
4
|
+
const command = {
|
5
|
+
name: commandNames.ADD_IMAGE_OBJECT,
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Add an image object
|
9
|
+
* @param {Graphics} graphics - Graphics instance
|
10
|
+
* @param {string} imgUrl - Image url to make object
|
11
|
+
* @returns {Promise}
|
12
|
+
*/
|
13
|
+
execute(graphics, imgUrl) {
|
14
|
+
return graphics.addImageObject(imgUrl).then((objectProps) => {
|
15
|
+
this.undoData.object = graphics.getObject(objectProps.id);
|
16
|
+
|
17
|
+
return objectProps;
|
18
|
+
});
|
19
|
+
},
|
20
|
+
|
21
|
+
/**
|
22
|
+
* @param {Graphics} graphics - Graphics instance
|
23
|
+
* @returns {Promise}
|
24
|
+
*/
|
25
|
+
undo(graphics) {
|
26
|
+
graphics.remove(this.undoData.object);
|
27
|
+
|
28
|
+
return Promise.resolve();
|
29
|
+
},
|
30
|
+
};
|
31
|
+
|
32
|
+
commandFactory.register(command);
|
33
|
+
|
34
|
+
export default command;
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { commandNames, rejectMessages } from '@/consts';
|
3
|
+
|
4
|
+
const command = {
|
5
|
+
name: commandNames.ADD_OBJECT,
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Add an object
|
9
|
+
* @param {Graphics} graphics - Graphics instance
|
10
|
+
* @param {Object} object - Fabric object
|
11
|
+
* @returns {Promise}
|
12
|
+
*/
|
13
|
+
execute(graphics, object) {
|
14
|
+
return new Promise((resolve, reject) => {
|
15
|
+
if (!graphics.contains(object)) {
|
16
|
+
graphics.add(object);
|
17
|
+
resolve(object);
|
18
|
+
} else {
|
19
|
+
reject(rejectMessages.addedObject);
|
20
|
+
}
|
21
|
+
});
|
22
|
+
},
|
23
|
+
|
24
|
+
/**
|
25
|
+
* @param {Graphics} graphics - Graphics instance
|
26
|
+
* @param {Object} object - Fabric object
|
27
|
+
* @returns {Promise}
|
28
|
+
*/
|
29
|
+
undo(graphics, object) {
|
30
|
+
return new Promise((resolve, reject) => {
|
31
|
+
if (graphics.contains(object)) {
|
32
|
+
graphics.remove(object);
|
33
|
+
resolve(object);
|
34
|
+
} else {
|
35
|
+
reject(rejectMessages.noObject);
|
36
|
+
}
|
37
|
+
});
|
38
|
+
},
|
39
|
+
};
|
40
|
+
|
41
|
+
commandFactory.register(command);
|
42
|
+
|
43
|
+
export default command;
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { componentNames, commandNames } from '@/consts';
|
3
|
+
|
4
|
+
const { SHAPE } = componentNames;
|
5
|
+
|
6
|
+
const command = {
|
7
|
+
name: commandNames.ADD_SHAPE,
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Add a shape
|
11
|
+
* @param {Graphics} graphics - Graphics instance
|
12
|
+
* @param {string} type - Shape type (ex: 'rect', 'circle', 'triangle')
|
13
|
+
* @param {Object} options - Shape options
|
14
|
+
* @param {string} [options.fill] - Shape foreground color (ex: '#fff', 'transparent')
|
15
|
+
* @param {string} [options.stroke] - Shape outline color
|
16
|
+
* @param {number} [options.strokeWidth] - Shape outline width
|
17
|
+
* @param {number} [options.width] - Width value (When type option is 'rect', this options can use)
|
18
|
+
* @param {number} [options.height] - Height value (When type option is 'rect', this options can use)
|
19
|
+
* @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)
|
20
|
+
* @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)
|
21
|
+
* @param {number} [options.left] - Shape x position
|
22
|
+
* @param {number} [options.top] - Shape y position
|
23
|
+
* @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not
|
24
|
+
* @returns {Promise}
|
25
|
+
*/
|
26
|
+
execute(graphics, type, options) {
|
27
|
+
const shapeComp = graphics.getComponent(SHAPE);
|
28
|
+
|
29
|
+
return shapeComp.add(type, options).then((objectProps) => {
|
30
|
+
const { id } = objectProps;
|
31
|
+
|
32
|
+
this.undoData.object = graphics.getObject(id);
|
33
|
+
|
34
|
+
return objectProps;
|
35
|
+
});
|
36
|
+
},
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @param {Graphics} graphics - Graphics instance
|
40
|
+
* @returns {Promise}
|
41
|
+
*/
|
42
|
+
undo(graphics) {
|
43
|
+
graphics.remove(this.undoData.object);
|
44
|
+
|
45
|
+
return Promise.resolve();
|
46
|
+
},
|
47
|
+
};
|
48
|
+
|
49
|
+
commandFactory.register(command);
|
50
|
+
|
51
|
+
export default command;
|
@@ -0,0 +1,73 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { componentNames, commandNames, rejectMessages } from '@/consts';
|
3
|
+
import {
|
4
|
+
setCachedUndoDataForDimension,
|
5
|
+
makeSelectionUndoData,
|
6
|
+
makeSelectionUndoDatum,
|
7
|
+
} from '@/helper/selectionModifyHelper';
|
8
|
+
|
9
|
+
const { TEXT } = componentNames;
|
10
|
+
|
11
|
+
const command = {
|
12
|
+
name: commandNames.ADD_TEXT,
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Add a text object
|
16
|
+
* @param {Graphics} graphics - Graphics instance
|
17
|
+
* @param {string} text - Initial input text
|
18
|
+
* @param {Object} [options] Options for text styles
|
19
|
+
* @param {Object} [options.styles] Initial styles
|
20
|
+
* @param {string} [options.styles.fill] Color
|
21
|
+
* @param {string} [options.styles.fontFamily] Font type for text
|
22
|
+
* @param {number} [options.styles.fontSize] Size
|
23
|
+
* @param {string} [options.styles.fontStyle] Type of inclination (normal / italic)
|
24
|
+
* @param {string} [options.styles.fontWeight] Type of thicker or thinner looking (normal / bold)
|
25
|
+
* @param {string} [options.styles.textAlign] Type of text align (left / center / right)
|
26
|
+
* @param {string} [options.styles.textDecoration] Type of line (underline / line-through / overline)
|
27
|
+
* @param {{x: number, y: number}} [options.position] - Initial position
|
28
|
+
* @returns {Promise}
|
29
|
+
*/
|
30
|
+
execute(graphics, text, options) {
|
31
|
+
const textComp = graphics.getComponent(TEXT);
|
32
|
+
|
33
|
+
if (this.undoData.object) {
|
34
|
+
const undoObject = this.undoData.object;
|
35
|
+
|
36
|
+
return new Promise((resolve, reject) => {
|
37
|
+
if (!graphics.contains(undoObject)) {
|
38
|
+
graphics.add(undoObject);
|
39
|
+
resolve(undoObject);
|
40
|
+
} else {
|
41
|
+
reject(rejectMessages.redo);
|
42
|
+
}
|
43
|
+
});
|
44
|
+
}
|
45
|
+
|
46
|
+
return textComp.add(text, options).then((objectProps) => {
|
47
|
+
const { id } = objectProps;
|
48
|
+
const textObject = graphics.getObject(id);
|
49
|
+
|
50
|
+
this.undoData.object = textObject;
|
51
|
+
|
52
|
+
setCachedUndoDataForDimension(
|
53
|
+
makeSelectionUndoData(textObject, () => makeSelectionUndoDatum(id, textObject, false))
|
54
|
+
);
|
55
|
+
|
56
|
+
return objectProps;
|
57
|
+
});
|
58
|
+
},
|
59
|
+
|
60
|
+
/**
|
61
|
+
* @param {Graphics} graphics - Graphics instance
|
62
|
+
* @returns {Promise}
|
63
|
+
*/
|
64
|
+
undo(graphics) {
|
65
|
+
graphics.remove(this.undoData.object);
|
66
|
+
|
67
|
+
return Promise.resolve();
|
68
|
+
},
|
69
|
+
};
|
70
|
+
|
71
|
+
commandFactory.register(command);
|
72
|
+
|
73
|
+
export default command;
|
@@ -0,0 +1,95 @@
|
|
1
|
+
import extend from 'tui-code-snippet/object/extend';
|
2
|
+
import commandFactory from '@/factory/command';
|
3
|
+
import { componentNames, rejectMessages, commandNames } from '@/consts';
|
4
|
+
|
5
|
+
const { FILTER } = componentNames;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Cached data for undo
|
9
|
+
* @type {Object}
|
10
|
+
*/
|
11
|
+
let cachedUndoDataForSilent = null;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Make undoData
|
15
|
+
* @param {string} type - Filter type
|
16
|
+
* @param {Object} prevfilterOption - prev Filter options
|
17
|
+
* @param {Object} options - Filter options
|
18
|
+
* @returns {object} - undo data
|
19
|
+
*/
|
20
|
+
function makeUndoData(type, prevfilterOption, options) {
|
21
|
+
const undoData = {};
|
22
|
+
|
23
|
+
if (type === 'mask') {
|
24
|
+
undoData.object = options.mask;
|
25
|
+
}
|
26
|
+
|
27
|
+
undoData.options = prevfilterOption;
|
28
|
+
|
29
|
+
return undoData;
|
30
|
+
}
|
31
|
+
|
32
|
+
const command = {
|
33
|
+
name: commandNames.APPLY_FILTER,
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Apply a filter into an image
|
37
|
+
* @param {Graphics} graphics - Graphics instance
|
38
|
+
* @param {string} type - Filter type
|
39
|
+
* @param {Object} options - Filter options
|
40
|
+
* @param {number} options.maskObjId - masking image object id
|
41
|
+
* @param {boolean} isSilent - is silent execution or not
|
42
|
+
* @returns {Promise}
|
43
|
+
*/
|
44
|
+
execute(graphics, type, options, isSilent) {
|
45
|
+
const filterComp = graphics.getComponent(FILTER);
|
46
|
+
|
47
|
+
if (type === 'mask') {
|
48
|
+
const maskObj = graphics.getObject(options.maskObjId);
|
49
|
+
|
50
|
+
if (!(maskObj && maskObj.isType('image'))) {
|
51
|
+
return Promise.reject(rejectMessages.invalidParameters);
|
52
|
+
}
|
53
|
+
|
54
|
+
extend(options, { mask: maskObj });
|
55
|
+
graphics.remove(options.mask);
|
56
|
+
}
|
57
|
+
if (!this.isRedo) {
|
58
|
+
const prevfilterOption = filterComp.getOptions(type);
|
59
|
+
const undoData = makeUndoData(type, prevfilterOption, options);
|
60
|
+
|
61
|
+
cachedUndoDataForSilent = this.setUndoData(undoData, cachedUndoDataForSilent, isSilent);
|
62
|
+
}
|
63
|
+
|
64
|
+
return filterComp.add(type, options);
|
65
|
+
},
|
66
|
+
|
67
|
+
/**
|
68
|
+
* @param {Graphics} graphics - Graphics instance
|
69
|
+
* @param {string} type - Filter type
|
70
|
+
* @returns {Promise}
|
71
|
+
*/
|
72
|
+
undo(graphics, type) {
|
73
|
+
const filterComp = graphics.getComponent(FILTER);
|
74
|
+
|
75
|
+
if (type === 'mask') {
|
76
|
+
const mask = this.undoData.object;
|
77
|
+
graphics.add(mask);
|
78
|
+
graphics.setActiveObject(mask);
|
79
|
+
|
80
|
+
return filterComp.remove(type);
|
81
|
+
}
|
82
|
+
|
83
|
+
// options changed case
|
84
|
+
if (this.undoData.options) {
|
85
|
+
return filterComp.add(type, this.undoData.options);
|
86
|
+
}
|
87
|
+
|
88
|
+
// filter added case
|
89
|
+
return filterComp.remove(type);
|
90
|
+
},
|
91
|
+
};
|
92
|
+
|
93
|
+
commandFactory.register(command);
|
94
|
+
|
95
|
+
export default command;
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { componentNames, rejectMessages, commandNames } from '@/consts';
|
3
|
+
|
4
|
+
const { ICON } = componentNames;
|
5
|
+
|
6
|
+
const command = {
|
7
|
+
name: commandNames.CHANGE_ICON_COLOR,
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Change icon color
|
11
|
+
* @param {Graphics} graphics - Graphics instance
|
12
|
+
* @param {number} id - object id
|
13
|
+
* @param {string} color - Color for icon
|
14
|
+
* @returns {Promise}
|
15
|
+
*/
|
16
|
+
execute(graphics, id, color) {
|
17
|
+
return new Promise((resolve, reject) => {
|
18
|
+
const iconComp = graphics.getComponent(ICON);
|
19
|
+
const targetObj = graphics.getObject(id);
|
20
|
+
|
21
|
+
if (!targetObj) {
|
22
|
+
reject(rejectMessages.noObject);
|
23
|
+
}
|
24
|
+
|
25
|
+
this.undoData.object = targetObj;
|
26
|
+
this.undoData.color = iconComp.getColor(targetObj);
|
27
|
+
iconComp.setColor(color, targetObj);
|
28
|
+
resolve();
|
29
|
+
});
|
30
|
+
},
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @param {Graphics} graphics - Graphics instance
|
34
|
+
* @returns {Promise}
|
35
|
+
*/
|
36
|
+
undo(graphics) {
|
37
|
+
const iconComp = graphics.getComponent(ICON);
|
38
|
+
const { object: icon, color } = this.undoData;
|
39
|
+
|
40
|
+
iconComp.setColor(color, icon);
|
41
|
+
|
42
|
+
return Promise.resolve();
|
43
|
+
},
|
44
|
+
};
|
45
|
+
|
46
|
+
commandFactory.register(command);
|
47
|
+
|
48
|
+
export default command;
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { commandNames } from '@/consts';
|
3
|
+
import { getCachedUndoDataForDimension } from '@/helper/selectionModifyHelper';
|
4
|
+
|
5
|
+
const command = {
|
6
|
+
name: commandNames.CHANGE_SELECTION,
|
7
|
+
|
8
|
+
execute(graphics, props) {
|
9
|
+
if (this.isRedo) {
|
10
|
+
props.forEach((prop) => {
|
11
|
+
graphics.setObjectProperties(prop.id, prop);
|
12
|
+
});
|
13
|
+
} else {
|
14
|
+
this.undoData = getCachedUndoDataForDimension();
|
15
|
+
}
|
16
|
+
|
17
|
+
return Promise.resolve();
|
18
|
+
},
|
19
|
+
|
20
|
+
undo(graphics) {
|
21
|
+
this.undoData.forEach((datum) => {
|
22
|
+
graphics.setObjectProperties(datum.id, datum);
|
23
|
+
});
|
24
|
+
|
25
|
+
return Promise.resolve();
|
26
|
+
},
|
27
|
+
};
|
28
|
+
|
29
|
+
commandFactory.register(command);
|
30
|
+
|
31
|
+
export default command;
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import forEachOwnProperties from 'tui-code-snippet/collection/forEachOwnProperties';
|
2
|
+
import commandFactory from '@/factory/command';
|
3
|
+
import { componentNames, rejectMessages, commandNames } from '@/consts';
|
4
|
+
|
5
|
+
const { SHAPE } = componentNames;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Cached data for undo
|
9
|
+
* @type {Object}
|
10
|
+
*/
|
11
|
+
let cachedUndoDataForSilent = null;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Make undoData
|
15
|
+
* @param {object} options - shape options
|
16
|
+
* @param {Component} targetObj - shape component
|
17
|
+
* @returns {object} - undo data
|
18
|
+
*/
|
19
|
+
function makeUndoData(options, targetObj) {
|
20
|
+
const undoData = {
|
21
|
+
object: targetObj,
|
22
|
+
options: {},
|
23
|
+
};
|
24
|
+
|
25
|
+
forEachOwnProperties(options, (value, key) => {
|
26
|
+
undoData.options[key] = targetObj[key];
|
27
|
+
});
|
28
|
+
|
29
|
+
return undoData;
|
30
|
+
}
|
31
|
+
|
32
|
+
const command = {
|
33
|
+
name: commandNames.CHANGE_SHAPE,
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Change a shape
|
37
|
+
* @param {Graphics} graphics - Graphics instance
|
38
|
+
* @param {number} id - object id
|
39
|
+
* @param {Object} options - Shape options
|
40
|
+
* @param {string} [options.fill] - Shape foreground color (ex: '#fff', 'transparent')
|
41
|
+
* @param {string} [options.stroke] - Shape outline color
|
42
|
+
* @param {number} [options.strokeWidth] - Shape outline width
|
43
|
+
* @param {number} [options.width] - Width value (When type option is 'rect', this options can use)
|
44
|
+
* @param {number} [options.height] - Height value (When type option is 'rect', this options can use)
|
45
|
+
* @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)
|
46
|
+
* @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)
|
47
|
+
* @param {number} [options.left] - Shape x position
|
48
|
+
* @param {number} [options.top] - Shape y position
|
49
|
+
* @param {number} [options.isRegular] - Whether resizing shape has 1:1 ratio or not
|
50
|
+
* @param {boolean} isSilent - is silent execution or not
|
51
|
+
* @returns {Promise}
|
52
|
+
*/
|
53
|
+
execute(graphics, id, options, isSilent) {
|
54
|
+
const shapeComp = graphics.getComponent(SHAPE);
|
55
|
+
const targetObj = graphics.getObject(id);
|
56
|
+
|
57
|
+
if (!targetObj) {
|
58
|
+
return Promise.reject(rejectMessages.noObject);
|
59
|
+
}
|
60
|
+
|
61
|
+
if (!this.isRedo) {
|
62
|
+
const undoData = makeUndoData(options, targetObj);
|
63
|
+
|
64
|
+
cachedUndoDataForSilent = this.setUndoData(undoData, cachedUndoDataForSilent, isSilent);
|
65
|
+
}
|
66
|
+
|
67
|
+
return shapeComp.change(targetObj, options);
|
68
|
+
},
|
69
|
+
|
70
|
+
/**
|
71
|
+
* @param {Graphics} graphics - Graphics instance
|
72
|
+
* @returns {Promise}
|
73
|
+
*/
|
74
|
+
undo(graphics) {
|
75
|
+
const shapeComp = graphics.getComponent(SHAPE);
|
76
|
+
const { object: shape, options } = this.undoData;
|
77
|
+
|
78
|
+
return shapeComp.change(shape, options);
|
79
|
+
},
|
80
|
+
};
|
81
|
+
|
82
|
+
commandFactory.register(command);
|
83
|
+
|
84
|
+
export default command;
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { componentNames, rejectMessages, commandNames } from '@/consts';
|
3
|
+
|
4
|
+
const { TEXT } = componentNames;
|
5
|
+
|
6
|
+
const command = {
|
7
|
+
name: commandNames.CHANGE_TEXT,
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Change a text
|
11
|
+
* @param {Graphics} graphics - Graphics instance
|
12
|
+
* @param {number} id - object id
|
13
|
+
* @param {string} text - Changing text
|
14
|
+
* @returns {Promise}
|
15
|
+
*/
|
16
|
+
execute(graphics, id, text) {
|
17
|
+
const textComp = graphics.getComponent(TEXT);
|
18
|
+
const targetObj = graphics.getObject(id);
|
19
|
+
|
20
|
+
if (!targetObj) {
|
21
|
+
return Promise.reject(rejectMessages.noObject);
|
22
|
+
}
|
23
|
+
|
24
|
+
this.undoData.object = targetObj;
|
25
|
+
this.undoData.text = textComp.getText(targetObj);
|
26
|
+
|
27
|
+
return textComp.change(targetObj, text);
|
28
|
+
},
|
29
|
+
|
30
|
+
/**
|
31
|
+
* @param {Graphics} graphics - Graphics instance
|
32
|
+
* @returns {Promise}
|
33
|
+
*/
|
34
|
+
undo(graphics) {
|
35
|
+
const textComp = graphics.getComponent(TEXT);
|
36
|
+
const { object: textObj, text } = this.undoData;
|
37
|
+
|
38
|
+
return textComp.change(textObj, text);
|
39
|
+
},
|
40
|
+
};
|
41
|
+
|
42
|
+
commandFactory.register(command);
|
43
|
+
|
44
|
+
export default command;
|
@@ -0,0 +1,80 @@
|
|
1
|
+
import forEachOwnProperties from 'tui-code-snippet/collection/forEachOwnProperties';
|
2
|
+
import commandFactory from '@/factory/command';
|
3
|
+
import { componentNames, rejectMessages, commandNames } from '@/consts';
|
4
|
+
|
5
|
+
const { TEXT } = componentNames;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Cached data for undo
|
9
|
+
* @type {Object}
|
10
|
+
*/
|
11
|
+
let cachedUndoDataForSilent = null;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Make undoData
|
15
|
+
* @param {object} styles - text styles
|
16
|
+
* @param {Component} targetObj - text component
|
17
|
+
* @returns {object} - undo data
|
18
|
+
*/
|
19
|
+
function makeUndoData(styles, targetObj) {
|
20
|
+
const undoData = {
|
21
|
+
object: targetObj,
|
22
|
+
styles: {},
|
23
|
+
};
|
24
|
+
forEachOwnProperties(styles, (value, key) => {
|
25
|
+
const undoValue = targetObj[key];
|
26
|
+
undoData.styles[key] = undoValue;
|
27
|
+
});
|
28
|
+
|
29
|
+
return undoData;
|
30
|
+
}
|
31
|
+
|
32
|
+
const command = {
|
33
|
+
name: commandNames.CHANGE_TEXT_STYLE,
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Change text styles
|
37
|
+
* @param {Graphics} graphics - Graphics instance
|
38
|
+
* @param {number} id - object id
|
39
|
+
* @param {Object} styles - text styles
|
40
|
+
* @param {string} [styles.fill] Color
|
41
|
+
* @param {string} [styles.fontFamily] Font type for text
|
42
|
+
* @param {number} [styles.fontSize] Size
|
43
|
+
* @param {string} [styles.fontStyle] Type of inclination (normal / italic)
|
44
|
+
* @param {string} [styles.fontWeight] Type of thicker or thinner looking (normal / bold)
|
45
|
+
* @param {string} [styles.textAlign] Type of text align (left / center / right)
|
46
|
+
* @param {string} [styles.textDecoration] Type of line (underline / line-through / overline)
|
47
|
+
* @param {boolean} isSilent - is silent execution or not
|
48
|
+
* @returns {Promise}
|
49
|
+
*/
|
50
|
+
execute(graphics, id, styles, isSilent) {
|
51
|
+
const textComp = graphics.getComponent(TEXT);
|
52
|
+
const targetObj = graphics.getObject(id);
|
53
|
+
|
54
|
+
if (!targetObj) {
|
55
|
+
return Promise.reject(rejectMessages.noObject);
|
56
|
+
}
|
57
|
+
if (!this.isRedo) {
|
58
|
+
const undoData = makeUndoData(styles, targetObj);
|
59
|
+
|
60
|
+
cachedUndoDataForSilent = this.setUndoData(undoData, cachedUndoDataForSilent, isSilent);
|
61
|
+
}
|
62
|
+
|
63
|
+
return textComp.setStyle(targetObj, styles);
|
64
|
+
},
|
65
|
+
|
66
|
+
/**
|
67
|
+
* @param {Graphics} graphics - Graphics instance
|
68
|
+
* @returns {Promise}
|
69
|
+
*/
|
70
|
+
undo(graphics) {
|
71
|
+
const textComp = graphics.getComponent(TEXT);
|
72
|
+
const { object: textObj, styles } = this.undoData;
|
73
|
+
|
74
|
+
return textComp.setStyle(textObj, styles);
|
75
|
+
},
|
76
|
+
};
|
77
|
+
|
78
|
+
commandFactory.register(command);
|
79
|
+
|
80
|
+
export default command;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { commandNames } from '@/consts';
|
3
|
+
|
4
|
+
const command = {
|
5
|
+
name: commandNames.CLEAR_OBJECTS,
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Clear all objects without background (main) image
|
9
|
+
* @param {Graphics} graphics - Graphics instance
|
10
|
+
* @returns {Promise}
|
11
|
+
*/
|
12
|
+
execute(graphics) {
|
13
|
+
return new Promise((resolve) => {
|
14
|
+
this.undoData.objects = graphics.removeAll();
|
15
|
+
resolve();
|
16
|
+
});
|
17
|
+
},
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @param {Graphics} graphics - Graphics instance
|
21
|
+
* @returns {Promise}
|
22
|
+
* @ignore
|
23
|
+
*/
|
24
|
+
undo(graphics) {
|
25
|
+
graphics.add(this.undoData.objects);
|
26
|
+
|
27
|
+
return Promise.resolve();
|
28
|
+
},
|
29
|
+
};
|
30
|
+
|
31
|
+
commandFactory.register(command);
|
32
|
+
|
33
|
+
export default command;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import commandFactory from '@/factory/command';
|
2
|
+
import { componentNames, commandNames } from '@/consts';
|
3
|
+
|
4
|
+
const { FLIP } = componentNames;
|
5
|
+
|
6
|
+
const command = {
|
7
|
+
name: commandNames.FLIP_IMAGE,
|
8
|
+
|
9
|
+
/**
|
10
|
+
* flip an image
|
11
|
+
* @param {Graphics} graphics - Graphics instance
|
12
|
+
* @param {string} type - 'flipX' or 'flipY' or 'reset'
|
13
|
+
* @returns {Promise}
|
14
|
+
*/
|
15
|
+
execute(graphics, type) {
|
16
|
+
const flipComp = graphics.getComponent(FLIP);
|
17
|
+
|
18
|
+
this.undoData.setting = flipComp.getCurrentSetting();
|
19
|
+
|
20
|
+
return flipComp[type]();
|
21
|
+
},
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @param {Graphics} graphics - Graphics instance
|
25
|
+
* @returns {Promise}
|
26
|
+
*/
|
27
|
+
undo(graphics) {
|
28
|
+
const flipComp = graphics.getComponent(FLIP);
|
29
|
+
|
30
|
+
return flipComp.set(this.undoData.setting);
|
31
|
+
},
|
32
|
+
};
|
33
|
+
|
34
|
+
commandFactory.register(command);
|
35
|
+
|
36
|
+
export default command;
|