├── .editorconfig ├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── question.md ├── auto-comment.yml ├── composite-actions │ ├── build-package │ │ └── action.yml │ ├── install-dependencies │ │ └── action.yml │ ├── publish-cdn │ │ └── action.yml │ ├── publish-docs │ │ └── action.yml │ └── publish-package │ │ └── action.yml ├── stale.yml └── workflows │ ├── detectRuntimeError.yml │ ├── publish-docs.yml │ ├── publish-npm.yml │ └── publish-wrapper.yml ├── .gitignore ├── .prettierrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── apps ├── image-editor │ ├── README.md │ ├── __mocks__ │ │ ├── fileMock.js │ │ └── svgMock.js │ ├── createConfigVariable.js │ ├── examples │ │ ├── css │ │ │ ├── service-basic.css │ │ │ ├── service-mobile.css │ │ │ └── tui-example-style.css │ │ ├── example01-includeUi.html │ │ ├── example02-useApiDirect.html │ │ ├── example03-mobile.html │ │ ├── examples.json │ │ ├── img │ │ │ ├── TOAST UI Component.png │ │ │ ├── bg.jpg │ │ │ ├── bg.png │ │ │ ├── download.png │ │ │ ├── mask.png │ │ │ ├── openImage.png │ │ │ ├── redo.png │ │ │ ├── remove.png │ │ │ ├── sampleImage.jpg │ │ │ ├── sampleImage2.png │ │ │ └── undo.png │ │ └── js │ │ │ ├── service-basic.js │ │ │ ├── service-mobile.js │ │ │ └── theme │ │ │ ├── black-theme.js │ │ │ └── white-theme.js │ ├── index.d.ts │ ├── jest-setup.js │ ├── jest.config.js │ ├── makesvg.js │ ├── package.json │ ├── scripts │ │ ├── publishToCDN.js │ │ └── updateWrapper.js │ ├── src │ │ ├── css │ │ │ ├── buttons.styl │ │ │ ├── checkbox.styl │ │ │ ├── colorpicker.styl │ │ │ ├── gridtable.styl │ │ │ ├── icon.styl │ │ │ ├── index.styl │ │ │ ├── main.styl │ │ │ ├── position.styl │ │ │ ├── range.styl │ │ │ └── submenu.styl │ │ ├── index.js │ │ ├── js │ │ │ ├── action.js │ │ │ ├── command │ │ │ │ ├── addIcon.js │ │ │ │ ├── addImageObject.js │ │ │ │ ├── addObject.js │ │ │ │ ├── addShape.js │ │ │ │ ├── addText.js │ │ │ │ ├── applyFilter.js │ │ │ │ ├── changeIconColor.js │ │ │ │ ├── changeSelection.js │ │ │ │ ├── changeShape.js │ │ │ │ ├── changeText.js │ │ │ │ ├── changeTextStyle.js │ │ │ │ ├── clearObjects.js │ │ │ │ ├── flip.js │ │ │ │ ├── loadImage.js │ │ │ │ ├── removeFilter.js │ │ │ │ ├── removeObject.js │ │ │ │ ├── resize.js │ │ │ │ ├── resizeCanvasDimension.js │ │ │ │ ├── rotate.js │ │ │ │ ├── setObjectPosition.js │ │ │ │ └── setObjectProperties.js │ │ │ ├── component │ │ │ │ ├── cropper.js │ │ │ │ ├── filter.js │ │ │ │ ├── flip.js │ │ │ │ ├── freeDrawing.js │ │ │ │ ├── icon.js │ │ │ │ ├── imageLoader.js │ │ │ │ ├── line.js │ │ │ │ ├── resize.js │ │ │ │ ├── rotation.js │ │ │ │ ├── shape.js │ │ │ │ ├── text.js │ │ │ │ └── zoom.js │ │ │ ├── consts.js │ │ │ ├── drawingMode │ │ │ │ ├── cropper.js │ │ │ │ ├── freeDrawing.js │ │ │ │ ├── icon.js │ │ │ │ ├── lineDrawing.js │ │ │ │ ├── resize.js │ │ │ │ ├── shape.js │ │ │ │ ├── text.js │ │ │ │ └── zoom.js │ │ │ ├── extension │ │ │ │ ├── arrowLine.js │ │ │ │ ├── blur.js │ │ │ │ ├── colorFilter.js │ │ │ │ ├── cropzone.js │ │ │ │ ├── emboss.js │ │ │ │ ├── mask.js │ │ │ │ └── sharpen.js │ │ │ ├── factory │ │ │ │ ├── command.js │ │ │ │ └── errorMessage.js │ │ │ ├── graphics.js │ │ │ ├── helper │ │ │ │ ├── imagetracer.js │ │ │ │ ├── selectionModifyHelper.js │ │ │ │ ├── shapeFilterFillHelper.js │ │ │ │ └── shapeResizeHelper.js │ │ │ ├── imageEditor.js │ │ │ ├── interface │ │ │ │ ├── command.js │ │ │ │ ├── component.js │ │ │ │ └── drawingMode.js │ │ │ ├── invoker.js │ │ │ ├── polyfill.js │ │ │ ├── ui.js │ │ │ ├── ui │ │ │ │ ├── crop.js │ │ │ │ ├── draw.js │ │ │ │ ├── filter.js │ │ │ │ ├── flip.js │ │ │ │ ├── history.js │ │ │ │ ├── icon.js │ │ │ │ ├── locale │ │ │ │ │ └── locale.js │ │ │ │ ├── mask.js │ │ │ │ ├── panelMenu.js │ │ │ │ ├── resize.js │ │ │ │ ├── rotate.js │ │ │ │ ├── shape.js │ │ │ │ ├── submenuBase.js │ │ │ │ ├── template │ │ │ │ │ ├── controls.js │ │ │ │ │ ├── mainContainer.js │ │ │ │ │ ├── style.js │ │ │ │ │ └── submenu │ │ │ │ │ │ ├── crop.js │ │ │ │ │ │ ├── draw.js │ │ │ │ │ │ ├── filter.js │ │ │ │ │ │ ├── flip.js │ │ │ │ │ │ ├── history.js │ │ │ │ │ │ ├── icon.js │ │ │ │ │ │ ├── mask.js │ │ │ │ │ │ ├── resize.js │ │ │ │ │ │ ├── rotate.js │ │ │ │ │ │ ├── shape.js │ │ │ │ │ │ ├── text.js │ │ │ │ │ │ └── zoom.js │ │ │ │ ├── text.js │ │ │ │ ├── theme │ │ │ │ │ ├── standard.js │ │ │ │ │ └── theme.js │ │ │ │ └── tools │ │ │ │ │ ├── colorpicker.js │ │ │ │ │ └── range.js │ │ │ └── util.js │ │ └── svg │ │ │ ├── default.svg │ │ │ ├── icon-a │ │ │ ├── ic-apply.svg │ │ │ ├── ic-cancel.svg │ │ │ ├── ic-color-transparent-w.svg │ │ │ ├── ic-crop.svg │ │ │ ├── ic-delete-all.svg │ │ │ ├── ic-delete.svg │ │ │ ├── ic-draw-free.svg │ │ │ ├── ic-draw-line.svg │ │ │ ├── ic-draw.svg │ │ │ ├── ic-filter.svg │ │ │ ├── ic-flip-reset.svg │ │ │ ├── ic-flip-x.svg │ │ │ ├── ic-flip-y.svg │ │ │ ├── ic-flip.svg │ │ │ ├── ic-history-check.svg │ │ │ ├── ic-history-crop.svg │ │ │ ├── ic-history-delete.svg │ │ │ ├── ic-history-draw.svg │ │ │ ├── ic-history-filter.svg │ │ │ ├── ic-history-flip.svg │ │ │ ├── ic-history-group.svg │ │ │ ├── ic-history-icon.svg │ │ │ ├── ic-history-load.svg │ │ │ ├── ic-history-mask.svg │ │ │ ├── ic-history-resize.svg │ │ │ ├── ic-history-rotate.svg │ │ │ ├── ic-history-shape.svg │ │ │ ├── ic-history-text.svg │ │ │ ├── ic-history.svg │ │ │ ├── ic-icon-arrow-2.svg │ │ │ ├── ic-icon-arrow-3.svg │ │ │ ├── ic-icon-arrow.svg │ │ │ ├── ic-icon-bubble.svg │ │ │ ├── ic-icon-heart.svg │ │ │ ├── ic-icon-load.svg │ │ │ ├── ic-icon-location.svg │ │ │ ├── ic-icon-polygon.svg │ │ │ ├── ic-icon-star-2.svg │ │ │ ├── ic-icon-star.svg │ │ │ ├── ic-icon.svg │ │ │ ├── ic-mask-load.svg │ │ │ ├── ic-mask.svg │ │ │ ├── ic-redo.svg │ │ │ ├── ic-reset.svg │ │ │ ├── ic-resize.svg │ │ │ ├── ic-rotate-clockwise.svg │ │ │ ├── ic-rotate-counterclockwise.svg │ │ │ ├── ic-rotate.svg │ │ │ ├── ic-shape-circle.svg │ │ │ ├── ic-shape-rectangle.svg │ │ │ ├── ic-shape-triangle.svg │ │ │ ├── ic-shape.svg │ │ │ ├── ic-text-align-center.svg │ │ │ ├── ic-text-align-left.svg │ │ │ ├── ic-text-align-right.svg │ │ │ ├── ic-text-bold.svg │ │ │ ├── ic-text-italic.svg │ │ │ ├── ic-text-underline.svg │ │ │ ├── ic-text.svg │ │ │ ├── ic-undo.svg │ │ │ ├── ic-zoom-hand.svg │ │ │ ├── ic-zoom-zoom-in.svg │ │ │ ├── ic-zoom-zoom-out.svg │ │ │ └── img-bi.svg │ │ │ ├── icon-b │ │ │ ├── ic-apply.svg │ │ │ ├── ic-cancel.svg │ │ │ ├── ic-crop.svg │ │ │ ├── ic-delete-all.svg │ │ │ ├── ic-delete.svg │ │ │ ├── ic-draw-free.svg │ │ │ ├── ic-draw-line.svg │ │ │ ├── ic-draw.svg │ │ │ ├── ic-filter.svg │ │ │ ├── ic-flip-reset.svg │ │ │ ├── ic-flip-x.svg │ │ │ ├── ic-flip-y.svg │ │ │ ├── ic-flip.svg │ │ │ ├── ic-history-check.svg │ │ │ ├── ic-history-crop.svg │ │ │ ├── ic-history-delete.svg │ │ │ ├── ic-history-draw.svg │ │ │ ├── ic-history-filter.svg │ │ │ ├── ic-history-flip.svg │ │ │ ├── ic-history-group.svg │ │ │ ├── ic-history-icon.svg │ │ │ ├── ic-history-load.svg │ │ │ ├── ic-history-mask.svg │ │ │ ├── ic-history-resize.svg │ │ │ ├── ic-history-rotate.svg │ │ │ ├── ic-history-shape.svg │ │ │ ├── ic-history-text.svg │ │ │ ├── ic-history.svg │ │ │ ├── ic-icon-arrow-2.svg │ │ │ ├── ic-icon-arrow-3.svg │ │ │ ├── ic-icon-arrow.svg │ │ │ ├── ic-icon-bubble.svg │ │ │ ├── ic-icon-heart.svg │ │ │ ├── ic-icon-load.svg │ │ │ ├── ic-icon-location.svg │ │ │ ├── ic-icon-polygon.svg │ │ │ ├── ic-icon-star-2.svg │ │ │ ├── ic-icon-star.svg │ │ │ ├── ic-icon.svg │ │ │ ├── ic-mask-load.svg │ │ │ ├── ic-mask.svg │ │ │ ├── ic-redo.svg │ │ │ ├── ic-reset.svg │ │ │ ├── ic-resize.svg │ │ │ ├── ic-rotate-clockwise.svg │ │ │ ├── ic-rotate-counterclockwise.svg │ │ │ ├── ic-rotate.svg │ │ │ ├── ic-shape-circle.svg │ │ │ ├── ic-shape-rectangle.svg │ │ │ ├── ic-shape-triangle.svg │ │ │ ├── ic-shape.svg │ │ │ ├── ic-text-align-center.svg │ │ │ ├── ic-text-align-left.svg │ │ │ ├── ic-text-align-right.svg │ │ │ ├── ic-text-bold.svg │ │ │ ├── ic-text-italic.svg │ │ │ ├── ic-text-underline.svg │ │ │ ├── ic-text.svg │ │ │ ├── ic-undo.svg │ │ │ ├── ic-zoom-hand.svg │ │ │ ├── ic-zoom-zoom-in.svg │ │ │ ├── ic-zoom-zoom-out.svg │ │ │ └── img-bi.svg │ │ │ ├── icon-c │ │ │ ├── ic-apply.svg │ │ │ ├── ic-cancel.svg │ │ │ ├── ic-crop.svg │ │ │ ├── ic-delete-all.svg │ │ │ ├── ic-delete.svg │ │ │ ├── ic-draw-free.svg │ │ │ ├── ic-draw-line.svg │ │ │ ├── ic-draw.svg │ │ │ ├── ic-filter.svg │ │ │ ├── ic-flip-reset.svg │ │ │ ├── ic-flip-x.svg │ │ │ ├── ic-flip-y.svg │ │ │ ├── ic-flip.svg │ │ │ ├── ic-history-check.svg │ │ │ ├── ic-history-crop.svg │ │ │ ├── ic-history-delete.svg │ │ │ ├── ic-history-draw.svg │ │ │ ├── ic-history-filter.svg │ │ │ ├── ic-history-flip.svg │ │ │ ├── ic-history-group.svg │ │ │ ├── ic-history-icon.svg │ │ │ ├── ic-history-load.svg │ │ │ ├── ic-history-mask.svg │ │ │ ├── ic-history-resize.svg │ │ │ ├── ic-history-rotate.svg │ │ │ ├── ic-history-shape.svg │ │ │ ├── ic-history-text.svg │ │ │ ├── ic-history.svg │ │ │ ├── ic-icon-arrow-2.svg │ │ │ ├── ic-icon-arrow-3.svg │ │ │ ├── ic-icon-arrow.svg │ │ │ ├── ic-icon-bubble.svg │ │ │ ├── ic-icon-heart.svg │ │ │ ├── ic-icon-load.svg │ │ │ ├── ic-icon-location.svg │ │ │ ├── ic-icon-polygon.svg │ │ │ ├── ic-icon-star-2.svg │ │ │ ├── ic-icon-star.svg │ │ │ ├── ic-icon.svg │ │ │ ├── ic-mask-load.svg │ │ │ ├── ic-mask.svg │ │ │ ├── ic-redo.svg │ │ │ ├── ic-reset.svg │ │ │ ├── ic-resize.svg │ │ │ ├── ic-rotate-clockwise.svg │ │ │ ├── ic-rotate-counterclockwise.svg │ │ │ ├── ic-rotate.svg │ │ │ ├── ic-shape-circle.svg │ │ │ ├── ic-shape-rectangle.svg │ │ │ ├── ic-shape-triangle.svg │ │ │ ├── ic-shape.svg │ │ │ ├── ic-text-align-center.svg │ │ │ ├── ic-text-align-left.svg │ │ │ ├── ic-text-align-right.svg │ │ │ ├── ic-text-bold.svg │ │ │ ├── ic-text-italic.svg │ │ │ ├── ic-text-underline.svg │ │ │ ├── ic-text.svg │ │ │ ├── ic-undo.svg │ │ │ ├── ic-zoom-hand.svg │ │ │ ├── ic-zoom-zoom-in.svg │ │ │ ├── ic-zoom-zoom-out.svg │ │ │ └── img-bi.svg │ │ │ └── icon-d │ │ │ ├── ic-apply.svg │ │ │ ├── ic-cancel.svg │ │ │ ├── ic-crop.svg │ │ │ ├── ic-delete-all.svg │ │ │ ├── ic-delete.svg │ │ │ ├── ic-draw-free.svg │ │ │ ├── ic-draw-line.svg │ │ │ ├── ic-draw.svg │ │ │ ├── ic-filter.svg │ │ │ ├── ic-flip-reset.svg │ │ │ ├── ic-flip-x.svg │ │ │ ├── ic-flip-y.svg │ │ │ ├── ic-flip.svg │ │ │ ├── ic-history-check.svg │ │ │ ├── ic-history-crop.svg │ │ │ ├── ic-history-delete.svg │ │ │ ├── ic-history-draw.svg │ │ │ ├── ic-history-filter.svg │ │ │ ├── ic-history-flip.svg │ │ │ ├── ic-history-group.svg │ │ │ ├── ic-history-icon.svg │ │ │ ├── ic-history-load.svg │ │ │ ├── ic-history-mask.svg │ │ │ ├── ic-history-resize.svg │ │ │ ├── ic-history-rotate.svg │ │ │ ├── ic-history-shape.svg │ │ │ ├── ic-history-text.svg │ │ │ ├── ic-history.svg │ │ │ ├── ic-icon-arrow-2.svg │ │ │ ├── ic-icon-arrow-3.svg │ │ │ ├── ic-icon-arrow.svg │ │ │ ├── ic-icon-bubble.svg │ │ │ ├── ic-icon-heart.svg │ │ │ ├── ic-icon-load.svg │ │ │ ├── ic-icon-location.svg │ │ │ ├── ic-icon-polygon.svg │ │ │ ├── ic-icon-star-2.svg │ │ │ ├── ic-icon-star.svg │ │ │ ├── ic-icon.svg │ │ │ ├── ic-mask-load.svg │ │ │ ├── ic-mask.svg │ │ │ ├── ic-redo.svg │ │ │ ├── ic-reset.svg │ │ │ ├── ic-resize.svg │ │ │ ├── ic-rotate-clockwise.svg │ │ │ ├── ic-rotate-counterclockwise.svg │ │ │ ├── ic-rotate.svg │ │ │ ├── ic-shape-circle.svg │ │ │ ├── ic-shape-rectangle.svg │ │ │ ├── ic-shape-triangle.svg │ │ │ ├── ic-shape.svg │ │ │ ├── ic-text-align-center.svg │ │ │ ├── ic-text-align-left.svg │ │ │ ├── ic-text-align-right.svg │ │ │ ├── ic-text-bold.svg │ │ │ ├── ic-text-italic.svg │ │ │ ├── ic-text-underline.svg │ │ │ ├── ic-text.svg │ │ │ ├── ic-undo.svg │ │ │ ├── ic-zoom-hand.svg │ │ │ ├── ic-zoom-zoom-in.svg │ │ │ ├── ic-zoom-zoom-out.svg │ │ │ └── img-bi.svg │ ├── tests │ │ ├── __snapshots__ │ │ │ ├── arrowLine.spec.js.snap │ │ │ ├── shape.spec.js.snap │ │ │ ├── text.spec.js.snap │ │ │ └── theme.spec.js.snap │ │ ├── action.spec.js │ │ ├── arrowLine.spec.js │ │ ├── command.spec.js │ │ ├── cropper.spec.js │ │ ├── cropzone.spec.js │ │ ├── drawingMode.spec.js │ │ ├── filter.spec.js │ │ ├── fixtures │ │ │ ├── TOAST UI Component.png │ │ │ ├── icon-a.svg │ │ │ ├── icon-b.svg │ │ │ ├── icon-c.svg │ │ │ ├── icon-d.svg │ │ │ ├── mask.png │ │ │ └── sampleImage.jpg │ │ ├── flip.spec.js │ │ ├── graphics.spec.js │ │ ├── history.spec.js │ │ ├── icon.spec.js │ │ ├── imageEditor.spec.js │ │ ├── index.js │ │ ├── invoker.spec.js │ │ ├── line.spec.js │ │ ├── promiseApi.spec.js │ │ ├── resize.spec.js │ │ ├── rotation.spec.js │ │ ├── selectionModifyHelper.spec.js │ │ ├── shape.spec.js │ │ ├── text.spec.js │ │ ├── theme.spec.js │ │ ├── types │ │ │ ├── tsconfig.json │ │ │ └── type-tests.ts │ │ ├── ui.spec.js │ │ ├── uiRange.spec.js │ │ └── zoom.spec.js │ ├── tsBannerGenerator.js │ ├── tuidoc.config.json │ ├── webpack.common.config.js │ ├── webpack.config.js │ ├── webpack.dev.config.js │ └── webpack.prod.config.js ├── react-image-editor │ ├── .babelrc.json │ ├── .eslintrc.js │ ├── .storybook │ │ ├── img │ │ │ └── sampleImage2.png │ │ ├── main.js │ │ └── preview.js │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.js │ ├── stories │ │ └── index.stories.js │ └── webpack.config.js └── vue-image-editor │ ├── .eslintrc.js │ ├── .storybook │ ├── img │ │ └── sampleImage2.png │ ├── main.js │ └── preview.js │ ├── README.md │ ├── package.json │ ├── src │ ├── ImageEditor.vue │ └── index.js │ ├── stories │ └── index.stories.js │ ├── vue.config.js │ └── webpack.config.js ├── babel.config.json ├── bower.json ├── docs ├── Apply-Mobile-Version-Image.md ├── Apply-Mobile-Version.md ├── Basic-Tutorial.md ├── COMMIT_MESSAGE_CONVENTION.md ├── ISSUE_TEMPLATE.md ├── ImageEditor-2.0.0-Migration-guide.md ├── PULL_REQUEST_TEMPLATE.md ├── Reference.md └── Structure.md ├── lerna.json ├── package-lock.json └── package.json /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | indent_style = space 4 | indent_size = 2 5 | end_of_line = lf 6 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['tui/es6', 'plugin:jest/recommended', 'plugin:prettier/recommended'], 4 | plugins: ['jest', 'prettier'], 5 | env: { 6 | browser: true, 7 | amd: true, 8 | node: true, 9 | es6: true, 10 | jest: true, 11 | 'jest/globals': true, 12 | }, 13 | parser: '@babel/eslint-parser', 14 | parserOptions: { 15 | sourceType: 'module', 16 | babelOptions: { 17 | rootMode: 'upward', 18 | }, 19 | }, 20 | ignorePatterns: ['node_modules/*', 'dist', 'examples'], 21 | rules: { 22 | 'prefer-destructuring': [ 23 | 'error', 24 | { 25 | VariableDeclarator: { array: true, object: true }, 26 | AssignmentExpression: { array: false, object: false }, 27 | }, 28 | ], 29 | }, 30 | overrides: [ 31 | { 32 | files: ['*.spec.js'], 33 | rules: { 34 | 'max-nested-callbacks': ['error', { max: 5 }], 35 | 'dot-notation': ['error', { allowKeywords: true }], 36 | 'no-undefined': 'off', 37 | 'jest/expect-expect': ['error', { assertFunctionNames: ['expect', 'assert*'] }], 38 | }, 39 | }, 40 | ], 41 | }; 42 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: Bug 6 | assignees: '' 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: 14 | 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | 28 | - OS: [e.g. iOS] 29 | - Browser [e.g. chrome, safari] 30 | - Version [e.g. 22] 31 | 32 | **Smartphone (please complete the following information):** 33 | 34 | - Device: [e.g. iPhone6] 35 | - OS: [e.g. iOS8.1] 36 | - Browser [e.g. stock browser, safari] 37 | - Version [e.g. 22] 38 | 39 | **Additional context** 40 | Add any other context about the problem here. 41 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: Enhancement, Need Discussion 6 | assignees: '' 7 | --- 8 | 9 | <!-- 10 | Thank you for your contribution. 11 | 12 | When it comes to write an issue, please, use the template below. 13 | To use the template is mandatory for submit new issue and we won't reply the issue that without the template. 14 | 15 | And you can write template's contents in Korean also. 16 | --> 17 | 18 | <!-- TEMPLATE --> 19 | 20 | ## Version 21 | 22 | <!-- Write the version of the imageEditor you are currently using. --> 23 | 24 | ## Development Environment 25 | 26 | <!-- Write the browser type, OS and so on --> 27 | 28 | ## Current Behavior 29 | 30 | <!-- Write a description of the current operation. You can add sample code, 'CodePen' or 'jsfiddle' links. --> 31 | 32 | ```js 33 | // Write example code 34 | ``` 35 | 36 | ## Expected Behavior 37 | 38 | <!-- Write a description of the future action. --> 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Create a question about imageEditor 4 | title: '' 5 | labels: Question 6 | assignees: '' 7 | --- 8 | 9 | <!-- 10 | To make it easier for us to help you, please include as much useful information as possible. 11 | 12 | Useful Links: 13 | - tutorial: https://github.com/nhn/tui.image-editor/tree/master/docs 14 | - API/Example: https://nhn.github.io/tui.image-editor/latest 15 | 16 | Before opening a new issue, please search existing issues https://github.com/nhn/tui.image-editor/issues 17 | --> 18 | 19 | **Summary** 20 | A clear and concise description of what the question is. 21 | 22 | **Screenshots** 23 | If applicable, add screenshots to help explain your question. 24 | 25 | **Version** 26 | Write the version of the imageEditor you are currently using. 27 | 28 | **Additional context** 29 | Add any other context about the problem here. 30 | -------------------------------------------------------------------------------- /.github/auto-comment.yml: -------------------------------------------------------------------------------- 1 | # Comment to a new issue. 2 | issuesOpened: > 3 | Thank you for raising an issue. 4 | 5 | We will try and get back to you as soon as possible. 6 | 7 | 8 | Please make sure you have filled out issue respecting our form **in English** and given us as much context as possible. 9 | **If not, the issue will be closed or not replied.** 10 | 11 | -------------------------------------------------------------------------------- /.github/composite-actions/install-dependencies/action.yml: -------------------------------------------------------------------------------- 1 | name: 'Install root dependencies using cache' 2 | description: 'Set Node.js version and install node_modules' 3 | outputs: 4 | root_cache_key: 5 | description: 'Key of root dependencies cache' 6 | value: ${{ steps.root_lockfile_hash.outputs.hash }} 7 | runs: 8 | using: 'composite' 9 | steps: 10 | - name: Use Node.js 15.x 11 | uses: actions/setup-node@v1 12 | with: 13 | node-version: '15.x' 14 | registry-url: https://registry.npmjs.org/ 15 | - name: Compute root dependencies cache key 16 | id: root_lockfile_hash 17 | run: echo "::set-output name=hash::${{ hashFiles('package-lock.json') }}" 18 | shell: bash 19 | - name: Check root dependencies cache 20 | uses: actions/cache@v2 21 | id: root_cache_dependencies 22 | with: 23 | path: ./node_modules 24 | key: ${{ steps.root_lockfile_hash.outputs.hash }} 25 | - name: Install root dependencies 26 | run: | 27 | if echo ${{ steps.root_cache_dependencies.outputs.cache-hit }} | grep -c "true" 28 | then 29 | echo "Cache hit - skipping root dependency installation" 30 | else 31 | npm install 32 | fi 33 | shell: bash 34 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-stale - https://github.com/probot/stale 2 | 3 | # Number of days of inactivity before an Issue or Pull Request becomes stale 4 | daysUntilStale: 30 5 | 6 | # Number of days of inactivity before an Issue or Pull Request with the stale label is closed. 7 | # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. 8 | daysUntilClose: 7 9 | 10 | # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable 11 | exemptLabels: 12 | - Feature 13 | - Enhancement 14 | - Bug 15 | - NHN Cloud 16 | 17 | # Label to use when marking as stale 18 | staleLabel: inactive 19 | 20 | # Comment to post when marking as stale. Set to `false` to disable 21 | markComment: > 22 | This issue has been automatically marked as inactive because there hasn’t been much going on it lately. 23 | It is going to be closed after 7 days. Thanks! 24 | # Comment to post when removing the stale label. 25 | # unmarkComment: > 26 | # Your comment here. 27 | 28 | # Comment to post when closing a stale Issue or Pull Request. 29 | closeComment: > 30 | This issue will be closed due to inactivity. Thanks for your contribution! 31 | -------------------------------------------------------------------------------- /.github/workflows/detectRuntimeError.yml: -------------------------------------------------------------------------------- 1 | name: detect runtime error 2 | 3 | on: 4 | schedule: 5 | - cron: '0 22 * * *' 6 | jobs: 7 | detectError: 8 | runs-on: ubuntu-latest 9 | env: 10 | WORKING_DIRECTORY: ./apps/image-editor 11 | steps: 12 | - name: checkout repository 13 | uses: actions/checkout@v2 14 | - name: create config variable 15 | working-directory: ${{ env.WORKING_DIRECTORY }} 16 | run: | 17 | node createConfigVariable.js 18 | - name: set global error variable 19 | working-directory: ${{ env.WORKING_DIRECTORY }} 20 | run: | 21 | errorVariable=`cat ./errorVariable.txt` 22 | echo "ERROR_VARIABLE=$errorVariable" >> $GITHUB_ENV 23 | - name: set url 24 | working-directory: ${{ env.WORKING_DIRECTORY }} 25 | shell: bash 26 | run: | 27 | url=`cat ./url.txt` 28 | echo "URLS=$url" >> $GITHUB_ENV 29 | - name: detect runtime error 30 | uses: nhn/toast-ui.detect-runtime-error-actions@v1.0.1 31 | with: 32 | global-error-log-variable: ${{ env.ERROR_VARIABLE }} 33 | urls: ${{ env.URLS }} 34 | env: 35 | BROWSERSTACK_USERNAME: ${{secrets.BROWSERSTACK_USERNAME}} 36 | BROWSERSTACK_ACCESS_KEY: ${{secrets.BROWSERSTACK_ACCESS_KEY}} 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 14 | .grunt 15 | 16 | # Compiled binary addons (http://nodejs.org/api/addons.html) 17 | build/Release 18 | 19 | # Dependency directory 20 | # Deployed apps should consider commenting this line out: 21 | # see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git 22 | node_modules 23 | 24 | # Bower Components 25 | bower_components 26 | lib 27 | 28 | #JSDOC 29 | doc 30 | 31 | # IDEA 32 | .idea 33 | *.iml 34 | 35 | # Window 36 | Thumbs.db 37 | Desktop.ini 38 | 39 | # MAC 40 | .DS_Store 41 | 42 | # SVN 43 | .svn 44 | 45 | # eclipse 46 | .project 47 | .metadata 48 | 49 | # build 50 | build 51 | 52 | # Atom 53 | tags 54 | .ctags 55 | .tern-project 56 | 57 | # etc 58 | .agignore 59 | *.swp 60 | etc 61 | temp 62 | api 63 | .tern-port 64 | *.vim 65 | .\#* 66 | .vscode 67 | 68 | dist 69 | !_*/dist/ 70 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 100, 4 | "tabWidth": 2, 5 | "useTabs": false, 6 | "semi": true, 7 | "quoteProps": "as-needed", 8 | "jsxSingleQuote": false, 9 | "trailingComma": "es5", 10 | "arrowParens": "always", 11 | "endOfLine": "lf", 12 | "bracketSpacing": true, 13 | "jsxBracketSameLine": false, 14 | "requirePragma": false, 15 | "insertPragma": false, 16 | "proseWrap": "preserve", 17 | "vueIndentScriptAndStyle": false 18 | } 19 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | <!-- 2 | Thank you for your contribution. 3 | 4 | When it comes to write an issue, please, use the template below. 5 | To use the template is mandatory for submit new issue and we won't reply the issue that without the template. 6 | 7 | And you can write template's contents in Korean also. 8 | --> 9 | 10 | <!-- TEMPLATE --> 11 | 12 | ## Version 13 | 14 | <!-- Write the version of the grid you are currently using. --> 15 | 16 | ## Development Environment 17 | 18 | <!-- Write the browser type, OS and so on --> 19 | 20 | ## Current Behavior 21 | 22 | <!-- Write a description of the current operation. You can add example code, 'CodePen' or 'jsfiddle' links. --> 23 | 24 | ```js 25 | // Write example code 26 | ``` 27 | 28 | ## Expected Behavior 29 | 30 | <!-- Write a description of the future action. --> 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License 3 | 4 | Copyright (c) 2019 NHN Cloud Corp. 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /apps/image-editor/__mocks__/fileMock.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | process(src, filename) { 5 | return `module.exports = ${JSON.stringify(path.basename(filename))};`; 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /apps/image-editor/__mocks__/svgMock.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | process() { 3 | return `module.exports = 'PGRlZnMgaWQ9InR1aS1pbWFnZS1lZGl0b3Itc3ZnLWRlZmF1bHQtaWNvbnMiPg=='`; 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /apps/image-editor/createConfigVariable.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | const config = require(path.resolve(__dirname, 'tuidoc.config.json')); 4 | const examples = config.examples || {}; 5 | const { filePath, globalErrorLogVariable } = examples; 6 | 7 | /** 8 | * Get Examples Url 9 | */ 10 | function getTestUrls() { 11 | if (!filePath) { 12 | throw Error('not exist examples path at tuidoc.config.json'); 13 | } 14 | 15 | const urlPrefix = 'http://nhn.github.io/tui.image-editor/latest'; 16 | 17 | const testUrls = fs.readdirSync(filePath).reduce((urls, fileName) => { 18 | if (/html$/.test(fileName)) { 19 | urls.push(`${urlPrefix}/${filePath}/${fileName}`); 20 | } 21 | 22 | return urls; 23 | }, []); 24 | 25 | fs.writeFileSync('url.txt', testUrls.join(', ')); 26 | } 27 | 28 | function getGlobalVariable() { 29 | if (!globalErrorLogVariable) { 30 | throw Error('not exist examples path at tuidoc.config.json'); 31 | } 32 | 33 | fs.writeFileSync('errorVariable.txt', globalErrorLogVariable); 34 | } 35 | 36 | getTestUrls(); 37 | getGlobalVariable(); 38 | -------------------------------------------------------------------------------- /apps/image-editor/examples/css/tui-example-style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | .code-description { 7 | padding: 22px 52px; 8 | background-color: rgba(81, 92, 230, 0.1); 9 | line-height: 1.4em; 10 | } 11 | 12 | .code-description, 13 | .code-description a { 14 | font-family: Arial; 15 | font-size: 14px; 16 | color: #515ce6; 17 | } 18 | 19 | .code-html { 20 | padding: 20px 52px; 21 | } 22 | -------------------------------------------------------------------------------- /apps/image-editor/examples/examples.json: -------------------------------------------------------------------------------- 1 | { 2 | "example01-includeUi": { 3 | "title": "1. Include ui" 4 | }, 5 | "example02-useApiDirect": { 6 | "title": "2. Use api direct (basic)" 7 | }, 8 | "example03-mobile": { 9 | "title": "3. Mobile" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apps/image-editor/examples/img/TOAST UI Component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/TOAST UI Component.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/bg.jpg -------------------------------------------------------------------------------- /apps/image-editor/examples/img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/bg.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/download.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/mask.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/openImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/openImage.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/redo.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/remove.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/sampleImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/sampleImage.jpg -------------------------------------------------------------------------------- /apps/image-editor/examples/img/sampleImage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/sampleImage2.png -------------------------------------------------------------------------------- /apps/image-editor/examples/img/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/examples/img/undo.png -------------------------------------------------------------------------------- /apps/image-editor/jest-setup.js: -------------------------------------------------------------------------------- 1 | import 'jest-canvas-mock'; 2 | -------------------------------------------------------------------------------- /apps/image-editor/jest.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const setupFile = path.resolve(__dirname, './jest-setup.js'); 3 | 4 | module.exports = { 5 | moduleFileExtensions: ['js'], 6 | testEnvironment: 'jsdom', 7 | transform: { 8 | '^.+\\.js#39;: 'jest-esm-transformer', 9 | '^.+\\.svg#39;: '<rootDir>/__mocks__/svgMock.js', 10 | }, 11 | transformIgnorePatterns: ['<rootDir>/node_modules/'], 12 | testMatch: ['<rootDir>/**/*.spec.js'], 13 | clearMocks: true, 14 | moduleNameMapper: { 15 | '^@/(.*)#39;: '<rootDir>/src/js/$1', 16 | '^@css/(.*)#39;: '<rootDir>/src/css/$1', 17 | '^@svg/(.*)#39;: '<rootDir>/src/svg/$1', 18 | '^fixtures/(.*)#39;: '<rootDir>/__mocks__/fileMock.js', 19 | }, 20 | setupFiles: [setupFile], 21 | }; 22 | -------------------------------------------------------------------------------- /apps/image-editor/makesvg.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | const fs = require('fs'); 3 | const mkdirp = require('mkdirp'); 4 | const svgstore = require('svgstore'); 5 | const svgDir = './src/svg'; 6 | 7 | function getFileList(dir) { 8 | const targetDir = `${svgDir}/${dir}`; 9 | const sprites = svgstore(); 10 | fs.readdir(targetDir, (err, files) => { 11 | if (!files) return; 12 | files.forEach((file) => { 13 | if (file.match(/^\./)) return; 14 | const id = `${dir}-${file.replace(/\.svg$/, '')}`; 15 | const svg = fs.readFileSync(`${targetDir}/${file}`); 16 | sprites.add(id, svg); 17 | }); 18 | fs.writeFileSync(`./dist/svg/${dir}.svg`, sprites); 19 | }); 20 | } 21 | 22 | mkdirp('./dist/svg').then((path) => { 23 | if (path) { 24 | fs.readdir(svgDir, (err, dirs) => { 25 | dirs.forEach((dir) => { 26 | getFileList(dir); 27 | }); 28 | }); 29 | } 30 | }); 31 | -------------------------------------------------------------------------------- /apps/image-editor/scripts/updateWrapper.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | const path = require('path'); 3 | const fs = require('fs'); 4 | 5 | const CORE_PACKAGE_JSON_PATH = path.join(__dirname, '../package.json'); 6 | const REACT_PACKAGE_JSON_PATH = path.join(__dirname, '../../react-image-editor/package.json'); 7 | const VUE_PACKAGE_JSON_PATH = path.join(__dirname, '../../vue-image-editor/package.json'); 8 | 9 | const corePackage = require(CORE_PACKAGE_JSON_PATH); 10 | const reactPackage = require(REACT_PACKAGE_JSON_PATH); 11 | const vuePackage = require(VUE_PACKAGE_JSON_PATH); 12 | 13 | const version = corePackage.version; 14 | 15 | reactPackage.version = version; 16 | reactPackage.dependencies['tui-image-editor'] = `^${version}`; 17 | 18 | fs.writeFileSync(REACT_PACKAGE_JSON_PATH, `${JSON.stringify(reactPackage, null, 2)}\n`); 19 | 20 | vuePackage.version = version; 21 | vuePackage.dependencies['tui-image-editor'] = `^${version}`; 22 | 23 | fs.writeFileSync(VUE_PACKAGE_JSON_PATH, `${JSON.stringify(vuePackage, null, 2)}\n`); 24 | -------------------------------------------------------------------------------- /apps/image-editor/src/css/icon.styl: -------------------------------------------------------------------------------- 1 | /* ICON */ 2 | .{prefix}-container 3 | .tie-icon-add-button .{prefix}-button 4 | min-width: 42px; 5 | .svg_ic-menu 6 | .svg_ic-helpmenu 7 | width: 24px; 8 | height: 24px; 9 | .svg_ic-submenu 10 | width: 32px; 11 | height: 32px; 12 | .svg_img-bi 13 | width: 257px; 14 | height: 26px; 15 | 16 | .{prefix}-help-menu 17 | .{prefix}-controls 18 | svg > use 19 | display: none; 20 | .enabled svg:hover > use.hover 21 | .normal svg:hover > use.hover 22 | display: block; 23 | .active svg:hover > use.hover 24 | display: none; 25 | .on svg > use.hover, 26 | .opened svg > use.hover 27 | display: block; 28 | svg > use.normal 29 | display: block; 30 | .active svg > use.active 31 | display: block; 32 | .enabled svg > use.enabled 33 | display: block; 34 | .active svg > use.normal, 35 | .enabled svg > use.normal 36 | display: none; 37 | .help svg > use.disabled, 38 | .help.enabled svg > use.normal 39 | display: block; 40 | .help.enabled svg > use.disabled 41 | display: none; 42 | 43 | .{prefix}-controls:hover 44 | z-index: 3; 45 | -------------------------------------------------------------------------------- /apps/image-editor/src/css/index.styl: -------------------------------------------------------------------------------- 1 | prefix = 'tui-image-editor' 2 | 3 | @import 'main.styl' 4 | @import 'gridtable.styl' 5 | @import 'submenu.styl' 6 | @import 'checkbox.styl' 7 | @import 'range.styl' 8 | @import 'position.styl' 9 | @import 'icon.styl' 10 | @import 'colorpicker.styl' 11 | @import 'buttons.styl' 12 | .{prefix}-container.top 13 | &.{prefix}-top-optimization 14 | .{prefix}-controls ul 15 | text-align: right; 16 | .{prefix}-controls-logo 17 | display: none; 18 | -------------------------------------------------------------------------------- /apps/image-editor/src/index.js: -------------------------------------------------------------------------------- 1 | import '@/polyfill'; 2 | import ImageEditor from '@/imageEditor'; 3 | import '@css/index.styl'; 4 | 5 | // commands 6 | import '@/command/addIcon'; 7 | import '@/command/addImageObject'; 8 | import '@/command/addObject'; 9 | import '@/command/addShape'; 10 | import '@/command/addText'; 11 | import '@/command/applyFilter'; 12 | import '@/command/changeIconColor'; 13 | import '@/command/changeShape'; 14 | import '@/command/changeText'; 15 | import '@/command/changeTextStyle'; 16 | import '@/command/clearObjects'; 17 | import '@/command/flip'; 18 | import '@/command/loadImage'; 19 | import '@/command/removeFilter'; 20 | import '@/command/removeObject'; 21 | import '@/command/resizeCanvasDimension'; 22 | import '@/command/rotate'; 23 | import '@/command/setObjectProperties'; 24 | import '@/command/setObjectPosition'; 25 | import '@/command/changeSelection'; 26 | import '@/command/resize'; 27 | 28 | export default ImageEditor; 29 | export { ImageEditor }; 30 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/addIcon.js: -------------------------------------------------------------------------------- 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; 43 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/addImageObject.js: -------------------------------------------------------------------------------- 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; 35 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/addObject.js: -------------------------------------------------------------------------------- 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; 44 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/changeSelection.js: -------------------------------------------------------------------------------- 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; 32 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/changeText.js: -------------------------------------------------------------------------------- 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; 45 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/clearObjects.js: -------------------------------------------------------------------------------- 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; 34 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/flip.js: -------------------------------------------------------------------------------- 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; 37 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/removeFilter.js: -------------------------------------------------------------------------------- 1 | import commandFactory from '@/factory/command'; 2 | import { componentNames, commandNames } from '@/consts'; 3 | 4 | const { FILTER } = componentNames; 5 | 6 | const command = { 7 | name: commandNames.REMOVE_FILTER, 8 | 9 | /** 10 | * Remove a filter from an image 11 | * @param {Graphics} graphics - Graphics instance 12 | * @param {string} type - Filter type 13 | * @returns {Promise} 14 | */ 15 | execute(graphics, type) { 16 | const filterComp = graphics.getComponent(FILTER); 17 | 18 | this.undoData.options = filterComp.getOptions(type); 19 | 20 | return filterComp.remove(type); 21 | }, 22 | 23 | /** 24 | * @param {Graphics} graphics - Graphics instance 25 | * @param {string} type - Filter type 26 | * @returns {Promise} 27 | */ 28 | undo(graphics, type) { 29 | const filterComp = graphics.getComponent(FILTER); 30 | const { options } = this.undoData; 31 | 32 | return filterComp.add(type, options); 33 | }, 34 | }; 35 | 36 | commandFactory.register(command); 37 | 38 | export default command; 39 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/removeObject.js: -------------------------------------------------------------------------------- 1 | import commandFactory from '@/factory/command'; 2 | import { commandNames, rejectMessages } from '@/consts'; 3 | 4 | const command = { 5 | name: commandNames.REMOVE_OBJECT, 6 | 7 | /** 8 | * Remove an object 9 | * @param {Graphics} graphics - Graphics instance 10 | * @param {number} id - object id 11 | * @returns {Promise} 12 | */ 13 | execute(graphics, id) { 14 | return new Promise((resolve, reject) => { 15 | this.undoData.objects = graphics.removeObjectById(id); 16 | if (this.undoData.objects.length) { 17 | resolve(); 18 | } else { 19 | reject(rejectMessages.noObject); 20 | } 21 | }); 22 | }, 23 | 24 | /** 25 | * @param {Graphics} graphics - Graphics instance 26 | * @returns {Promise} 27 | */ 28 | undo(graphics) { 29 | graphics.add(this.undoData.objects); 30 | 31 | return Promise.resolve(); 32 | }, 33 | }; 34 | 35 | commandFactory.register(command); 36 | 37 | export default command; 38 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/resize.js: -------------------------------------------------------------------------------- 1 | import commandFactory from '@/factory/command'; 2 | import { componentNames, commandNames } from '@/consts'; 3 | 4 | const { RESIZE } = componentNames; 5 | 6 | const command = { 7 | name: commandNames.RESIZE_IMAGE, 8 | 9 | /** 10 | * Resize an image 11 | * @param {Graphics} graphics - Graphics instance 12 | * @param {object} dimensions - Image Dimensions 13 | * @returns {Promise} 14 | */ 15 | execute(graphics, dimensions) { 16 | const resizeComp = graphics.getComponent(RESIZE); 17 | 18 | let originalDimensions = resizeComp.getOriginalDimensions(); 19 | if (!originalDimensions) { 20 | originalDimensions = resizeComp.getCurrentDimensions(); 21 | } 22 | 23 | this.undoData.dimensions = originalDimensions; 24 | 25 | return resizeComp.resize(dimensions); 26 | }, 27 | 28 | /** 29 | * @param {Graphics} graphics - Graphics instance 30 | * @returns {Promise} 31 | */ 32 | undo(graphics) { 33 | const resizeComp = graphics.getComponent(RESIZE); 34 | 35 | return resizeComp.resize(this.undoData.dimensions); 36 | }, 37 | }; 38 | 39 | commandFactory.register(command); 40 | 41 | export default command; 42 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/command/resizeCanvasDimension.js: -------------------------------------------------------------------------------- 1 | import commandFactory from '@/factory/command'; 2 | import { commandNames } from '@/consts'; 3 | 4 | const command = { 5 | name: commandNames.RESIZE_CANVAS_DIMENSION, 6 | 7 | /** 8 | * resize the canvas with given dimension 9 | * @param {Graphics} graphics - Graphics instance 10 | * @param {{width: number, height: number}} dimension - Max width & height 11 | * @returns {Promise} 12 | */ 13 | execute(graphics, dimension) { 14 | return new Promise((resolve) => { 15 | this.undoData.size = { 16 | width: graphics.cssMaxWidth, 17 | height: graphics.cssMaxHeight, 18 | }; 19 | 20 | graphics.setCssMaxDimension(dimension); 21 | graphics.adjustCanvasDimension(); 22 | resolve(); 23 | }); 24 | }, 25 | 26 | /** 27 | * @param {Graphics} graphics - Graphics instance 28 | * @returns {Promise} 29 | */ 30 | undo(graphics) { 31 | graphics.setCssMaxDimension(this.undoData.size); 32 | graphics.adjustCanvasDimension(); 33 | 34 | return Promise.resolve(); 35 | }, 36 | }; 37 | 38 | commandFactory.register(command); 39 | 40 | export default command; 41 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/cropper.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * CropperDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class CropperDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.CROPPER); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @override 18 | */ 19 | start(graphics) { 20 | const cropper = graphics.getComponent(components.CROPPER); 21 | cropper.start(); 22 | } 23 | 24 | /** 25 | * stop this drawing mode 26 | * @param {Graphics} graphics - Graphics instance 27 | * @override 28 | */ 29 | end(graphics) { 30 | const cropper = graphics.getComponent(components.CROPPER); 31 | cropper.end(); 32 | } 33 | } 34 | 35 | export default CropperDrawingMode; 36 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/freeDrawing.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * FreeDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class FreeDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.FREE_DRAWING); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @param {{width: ?number, color: ?string}} [options] - Brush width & color 18 | * @override 19 | */ 20 | start(graphics, options) { 21 | const freeDrawing = graphics.getComponent(components.FREE_DRAWING); 22 | freeDrawing.start(options); 23 | } 24 | 25 | /** 26 | * stop this drawing mode 27 | * @param {Graphics} graphics - Graphics instance 28 | * @override 29 | */ 30 | end(graphics) { 31 | const freeDrawing = graphics.getComponent(components.FREE_DRAWING); 32 | freeDrawing.end(); 33 | } 34 | } 35 | 36 | export default FreeDrawingMode; 37 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/icon.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * IconDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class IconDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.ICON); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @override 18 | */ 19 | start(graphics) { 20 | const icon = graphics.getComponent(components.ICON); 21 | icon.start(); 22 | } 23 | 24 | /** 25 | * stop this drawing mode 26 | * @param {Graphics} graphics - Graphics instance 27 | * @override 28 | */ 29 | end(graphics) { 30 | const icon = graphics.getComponent(components.ICON); 31 | icon.end(); 32 | } 33 | } 34 | 35 | export default IconDrawingMode; 36 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/lineDrawing.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * LineDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class LineDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.LINE_DRAWING); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @param {{width: ?number, color: ?string}} [options] - Brush width & color 18 | * @override 19 | */ 20 | start(graphics, options) { 21 | const lineDrawing = graphics.getComponent(components.LINE); 22 | lineDrawing.start(options); 23 | } 24 | 25 | /** 26 | * stop this drawing mode 27 | * @param {Graphics} graphics - Graphics instance 28 | * @override 29 | */ 30 | end(graphics) { 31 | const lineDrawing = graphics.getComponent(components.LINE); 32 | lineDrawing.end(); 33 | } 34 | } 35 | 36 | export default LineDrawingMode; 37 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/resize.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * ResizeDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class ResizeDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.RESIZE); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @override 18 | */ 19 | start(graphics) { 20 | const resize = graphics.getComponent(components.RESIZE); 21 | resize.start(); 22 | } 23 | 24 | /** 25 | * stop this drawing mode 26 | * @param {Graphics} graphics - Graphics instance 27 | * @override 28 | */ 29 | end(graphics) { 30 | const resize = graphics.getComponent(components.RESIZE); 31 | resize.end(); 32 | } 33 | } 34 | 35 | export default ResizeDrawingMode; 36 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/shape.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * ShapeDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class ShapeDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.SHAPE); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @override 18 | */ 19 | start(graphics) { 20 | const shape = graphics.getComponent(components.SHAPE); 21 | shape.start(); 22 | } 23 | 24 | /** 25 | * stop this drawing mode 26 | * @param {Graphics} graphics - Graphics instance 27 | * @override 28 | */ 29 | end(graphics) { 30 | const shape = graphics.getComponent(components.SHAPE); 31 | shape.end(); 32 | } 33 | } 34 | 35 | export default ShapeDrawingMode; 36 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/text.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * TextDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class TextDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.TEXT); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @override 18 | */ 19 | start(graphics) { 20 | const text = graphics.getComponent(components.TEXT); 21 | text.start(); 22 | } 23 | 24 | /** 25 | * stop this drawing mode 26 | * @param {Graphics} graphics - Graphics instance 27 | * @override 28 | */ 29 | end(graphics) { 30 | const text = graphics.getComponent(components.TEXT); 31 | text.end(); 32 | } 33 | } 34 | 35 | export default TextDrawingMode; 36 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/drawingMode/zoom.js: -------------------------------------------------------------------------------- 1 | import DrawingMode from '@/interface/drawingMode'; 2 | import { drawingModes, componentNames as components } from '@/consts'; 3 | 4 | /** 5 | * ZoomDrawingMode class 6 | * @class 7 | * @ignore 8 | */ 9 | class ZoomDrawingMode extends DrawingMode { 10 | constructor() { 11 | super(drawingModes.ZOOM); 12 | } 13 | 14 | /** 15 | * start this drawing mode 16 | * @param {Graphics} graphics - Graphics instance 17 | * @override 18 | */ 19 | start(graphics) { 20 | const zoom = graphics.getComponent(components.ZOOM); 21 | 22 | zoom.start(); 23 | } 24 | 25 | /** 26 | * stop this drawing mode 27 | * @param {Graphics} graphics - Graphics instance 28 | * @override 29 | */ 30 | end(graphics) { 31 | const zoom = graphics.getComponent(components.ZOOM); 32 | 33 | zoom.end(); 34 | } 35 | } 36 | 37 | export default ZoomDrawingMode; 38 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/extension/blur.js: -------------------------------------------------------------------------------- 1 | import { fabric } from 'fabric'; 2 | 3 | /** 4 | * Blur object 5 | * @class Blur 6 | * @extends {fabric.Image.filters.Convolute} 7 | * @ignore 8 | */ 9 | const Blur = fabric.util.createClass( 10 | fabric.Image.filters.Convolute, 11 | /** @lends Convolute.prototype */ { 12 | /** 13 | * Filter type 14 | * @param {String} type 15 | * @default 16 | */ 17 | type: 'Blur', 18 | 19 | /** 20 | * constructor 21 | * @override 22 | */ 23 | initialize() { 24 | this.matrix = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9]; 25 | }, 26 | } 27 | ); 28 | 29 | export default Blur; 30 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/extension/emboss.js: -------------------------------------------------------------------------------- 1 | import { fabric } from 'fabric'; 2 | 3 | /** 4 | * Emboss object 5 | * @class Emboss 6 | * @extends {fabric.Image.filters.Convolute} 7 | * @ignore 8 | */ 9 | const Emboss = fabric.util.createClass( 10 | fabric.Image.filters.Convolute, 11 | /** @lends Convolute.prototype */ { 12 | /** 13 | * Filter type 14 | * @param {String} type 15 | * @default 16 | */ 17 | type: 'Emboss', 18 | 19 | /** 20 | * constructor 21 | * @override 22 | */ 23 | initialize() { 24 | this.matrix = [1, 1, 1, 1, 0.7, -1, -1, -1, -1]; 25 | }, 26 | } 27 | ); 28 | 29 | export default Emboss; 30 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/extension/sharpen.js: -------------------------------------------------------------------------------- 1 | import { fabric } from 'fabric'; 2 | 3 | /** 4 | * Sharpen object 5 | * @class Sharpen 6 | * @extends {fabric.Image.filters.Convolute} 7 | * @ignore 8 | */ 9 | const Sharpen = fabric.util.createClass( 10 | fabric.Image.filters.Convolute, 11 | /** @lends Convolute.prototype */ { 12 | /** 13 | * Filter type 14 | * @param {String} type 15 | * @default 16 | */ 17 | type: 'Sharpen', 18 | 19 | /** 20 | * constructor 21 | * @override 22 | */ 23 | initialize() { 24 | this.matrix = [0, -1, 0, -1, 5, -1, 0, -1, 0]; 25 | }, 26 | } 27 | ); 28 | 29 | export default Sharpen; 30 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/factory/command.js: -------------------------------------------------------------------------------- 1 | import Command from '@/interface/command'; 2 | 3 | const commands = {}; 4 | 5 | /** 6 | * Create a command 7 | * @param {string} name - Command name 8 | * @param {...*} args - Arguments for creating command 9 | * @returns {Command} 10 | * @ignore 11 | */ 12 | function create(name, ...args) { 13 | const actions = commands[name]; 14 | if (actions) { 15 | return new Command(actions, args); 16 | } 17 | 18 | return null; 19 | } 20 | 21 | /** 22 | * Register a command with name as a key 23 | * @param {Object} command - {name:{string}, execute: {function}, undo: {function}} 24 | * @param {string} command.name - command name 25 | * @param {function} command.execute - executable function 26 | * @param {function} command.undo - undo function 27 | * @ignore 28 | */ 29 | function register(command) { 30 | commands[command.name] = command; 31 | } 32 | 33 | export default { 34 | create, 35 | register, 36 | }; 37 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/factory/errorMessage.js: -------------------------------------------------------------------------------- 1 | import extend from 'tui-code-snippet/object/extend'; 2 | import { keyMirror } from '@/util'; 3 | 4 | const types = keyMirror('UN_IMPLEMENTATION', 'NO_COMPONENT_NAME'); 5 | const messages = { 6 | UN_IMPLEMENTATION: 'Should implement a method: ', 7 | NO_COMPONENT_NAME: 'Should set a component name', 8 | }; 9 | const map = { 10 | UN_IMPLEMENTATION(methodName) { 11 | return messages.UN_IMPLEMENTATION + methodName; 12 | }, 13 | NO_COMPONENT_NAME() { 14 | return messages.NO_COMPONENT_NAME; 15 | }, 16 | }; 17 | 18 | export default { 19 | types: extend({}, types), 20 | 21 | create(type, ...args) { 22 | type = type.toLowerCase(); 23 | const func = map[type]; 24 | 25 | return func(...args); 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/interface/drawingMode.js: -------------------------------------------------------------------------------- 1 | import errorMessage from '@/factory/errorMessage'; 2 | 3 | const createMessage = errorMessage.create; 4 | const errorTypes = errorMessage.types; 5 | 6 | /** 7 | * DrawingMode interface 8 | * @class 9 | * @param {string} name - drawing mode name 10 | * @ignore 11 | */ 12 | class DrawingMode { 13 | constructor(name) { 14 | /** 15 | * the name of drawing mode 16 | * @type {string} 17 | */ 18 | this.name = name; 19 | } 20 | 21 | /** 22 | * Get this drawing mode name; 23 | * @returns {string} drawing mode name 24 | */ 25 | getName() { 26 | return this.name; 27 | } 28 | 29 | /** 30 | * start this drawing mode 31 | * @param {Object} options - drawing mode options 32 | * @abstract 33 | */ 34 | start() { 35 | throw new Error(createMessage(errorTypes.UN_IMPLEMENTATION, 'start')); 36 | } 37 | 38 | /** 39 | * stop this drawing mode 40 | * @abstract 41 | */ 42 | end() { 43 | throw new Error(createMessage(errorTypes.UN_IMPLEMENTATION, 'stop')); 44 | } 45 | } 46 | 47 | export default DrawingMode; 48 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/ui/locale/locale.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Translate messages 3 | */ 4 | class Locale { 5 | constructor(locale) { 6 | this._locale = locale; 7 | } 8 | 9 | /** 10 | * localize message 11 | * @param {string} message - message who will be localized 12 | * @returns {string} 13 | */ 14 | localize(message) { 15 | return this._locale[message] || message; 16 | } 17 | } 18 | 19 | export default Locale; 20 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/ui/template/controls.js: -------------------------------------------------------------------------------- 1 | import { getHelpMenuBarPosition } from '@/util'; 2 | 3 | export default ({ locale, biImage, loadButtonStyle, downloadButtonStyle, menuBarPosition }) => ` 4 | <ul class="tui-image-editor-help-menu ${getHelpMenuBarPosition(menuBarPosition)}"></ul> 5 | <div class="tui-image-editor-controls"> 6 | <div class="tui-image-editor-controls-logo"> 7 | <img src="${biImage}" /> 8 | </div> 9 | <ul class="tui-image-editor-menu"></ul> 10 | 11 | <div class="tui-image-editor-controls-buttons"> 12 | <div style="${loadButtonStyle}"> 13 | ${locale.localize('Load')} 14 | <input type="file" class="tui-image-editor-load-btn" /> 15 | </div> 16 | <button class="tui-image-editor-download-btn" style="${downloadButtonStyle}"> 17 | ${locale.localize('Download')} 18 | </button> 19 | </div> 20 | </div> 21 | `; 22 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/ui/template/submenu/history.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {Object} submenuInfo - submenu info for make template 3 | * @param {Locale} locale - Translate text 4 | * @param {Function} makeSvgIcon - svg icon generator 5 | * @param {string} name - history name 6 | * @param {string} detail - history detail information 7 | * @returns {string} 8 | */ 9 | export default ({ locale, makeSvgIcon, name, detail }) => ` 10 | <div class="tui-image-editor-history-item history"> 11 | <div class="history-item-icon"> 12 | ${makeSvgIcon(['normal', 'active'], `history-${name.toLowerCase()}`, true)} 13 | </div> 14 | <span> 15 | ${locale.localize(name)} 16 | ${detail ? `(${locale.localize(detail)})` : ''} 17 | </span> 18 | <div class="history-item-checkbox"> 19 | ${makeSvgIcon(['normal'], 'history-check', true)} 20 | </div> 21 | </div> 22 | `; 23 | -------------------------------------------------------------------------------- /apps/image-editor/src/js/ui/template/submenu/mask.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {Object} submenuInfo - submenu info for make template 3 | * @param {Locale} locale - Translate text 4 | * @param {Function} makeSvgIcon - svg icon generator 5 | * @returns {string} 6 | */ 7 | export default ({ locale, makeSvgIcon }) => ` 8 | <ul class="tui-image-editor-submenu-item"> 9 | <li> 10 | <div class="tui-image-editor-button"> 11 | <div> 12 | <input type="file" accept="image/*" class="tie-mask-image-file"> 13 | ${makeSvgIcon(['normal', 'active'], 'mask-load', true)} 14 | </div> 15 | <label> ${locale.localize('Load Mask Image')} </label> 16 | </div> 17 | </li> 18 | <li class="tui-image-editor-partition only-left-right"> 19 | <div></div> 20 | </li> 21 | <li class="tie-mask-apply tui-image-editor-newline apply" style="margin-top: 22px;margin-bottom: 5px"> 22 | <div class="tui-image-editor-button apply"> 23 | ${makeSvgIcon(['normal', 'active'], 'apply')} 24 | <label> 25 | ${locale.localize('Apply')} 26 | </label> 27 | </div> 28 | </li> 29 | </ul> 30 | `; 31 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-apply.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#434343" d="M4 12.011l5 5L20.011 6"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-cancel.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#434343" d="M6 6l12 12M18 6L6 18"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-color-transparent-w.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 32 32"> 2 | <defs> 3 | <circle id="a" cx="16" cy="16" r="16"/> 4 | </defs> 5 | <g fill="none" fill-rule="evenodd"> 6 | <g> 7 | <use fill="#FFF" xlink:href="#a"/> 8 | <circle cx="16" cy="16" r="15.5" stroke="#D5D5D5"/> 9 | </g> 10 | <path stroke="#FF4040" stroke-width="1.5" d="M27 5L5 27"/> 11 | </g> 12 | </svg> 13 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#434343" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/> 5 | <path fill="#434343" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-delete-all.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#434343" fill-rule="evenodd"> 3 | <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#434343" fill-rule="evenodd"> 3 | <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-draw-free.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-draw-line.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" d="M2 15.5h28"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#434343" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/> 4 | <path fill="#434343" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#434343" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/> 5 | <path fill="#434343" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-flip-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="31" height="32" viewBox="0 0 31 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M31 0H0v32h31z"/> 4 | <path fill="#434343" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/> 5 | <path stroke="#434343" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-flip-x.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M32 32H0V0h32z"/> 4 | <path fill="#434343" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-flip-y.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0v32h32V0z"/> 4 | <path fill="#434343" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#434343" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-check.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path stroke="#434343" d="M4.5 -1L1.5 2 6.5 7" transform="translate(-60 -804) translate(60 804) translate(2 3) rotate(-90 4 3)" /> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-84 -804) translate(84 804)"/> 4 | <path fill="#434343" d="M2 0h1v10c-.552 0-1-.448-1-1V0zM10 9v3H9V9h1zM9 2h1v6H9V2z" transform="translate(-84 -804) translate(84 804)"/> 5 | <path fill="#434343" d="M2 9H12V10H2zM9 2c.513 0 .936.386.993.883L10 3H3V2h6zM2 3H0V2h2v1z" transform="translate(-84 -804) translate(84 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g fill="#434343"> 4 | <path d="M2 9h8V1h1v8.5c0 .276-.224.5-.5.5h-9c-.276 0-.5-.224-.5-.5V1h1v8zM0 0H12V1H0z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 5 | <path d="M4 3H5V7H4zM7 3H8V7H7z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 6 | <path d="M4 1h4V0h1v1.5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V0h1v1z" transform="translate(-300 -804) translate(300 804) matrix(1 0 0 -1 0 2)"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 1H12V13H0z" transform="translate(-156 -804) translate(156 803)"/> 4 | <path stroke="#434343" d="M9.622 1.584l1.835 1.658-8.31 8.407L.5 12.5V11l9.122-9.416z" transform="translate(-156 -804) translate(156 803)"/> 5 | <path fill="#FFF" d="M7.628 3.753L10.378 3.753 10.378 4.253 7.628 4.253z" transform="translate(-156 -804) translate(156 803) rotate(45 9.003 4.003)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-276 -804) translate(276 804)"/> 4 | <path fill="#434343" d="M12 3v1H9V3h3zM7 4H0V3h7v1z" transform="translate(-276 -804) translate(276 804)"/> 5 | <path fill="#434343" d="M12 8v1H9V8h3zM7 9H0V8h7v1z" transform="translate(-276 -804) translate(276 804) matrix(-1 0 0 1 12 0)"/> 6 | <path fill="#434343" d="M8 1c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM4 7c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z" transform="translate(-276 -804) translate(276 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-108 -804) translate(108 804)"/> 4 | <path fill="#434343" d="M6 0L7 0 7 12 6 12zM11 10V9h1v1.5c0 .276-.224.5-.5.5H10v-1h1zM5 1v1H1v8h4v1H.5c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5H5zm7 5v2h-1V6h1zm0-3v2h-1V3h1zM9 1v1H7V1h2zm2.5 0c.276 0 .5.224.5.5V2h-2V1h1.5zM9 11H7v-1h2v1z" transform="translate(-108 -804) translate(108 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-group.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g transform="translate(-348 -804) translate(348 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <path fill="#434343" d="M1 9v2h1v1H.5c-.276 0-.5-.224-.5-.5V9h1zm11 1v1.5c0 .276-.224.5-.5.5H9v-1h2v-1h1zm-4 1v1H6v-1h2zm-3 0v1H3v-1h2zm7-4v2h-1V7h1zM1 6v2H0V6h1zm11-2v2h-1V4h1zM1 3v2H0V3h1zm10.5-3c.276 0 .5.224.5.5V3h-1V1h-1V0h1.5zM6 0v1H4V0h2zm3 0v1H7V0h2zM0 .5C0 .224.224 0 .5 0H3v1H1v1H0V.5zM9.5 4c.276 0 .5.224.5.5v5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V8.355c.317.094.652.145 1 .145V9h4V5h-.5c0-.348-.05-.683-.145-1H9.5z"/> 6 | <circle cx="5" cy="5" r="2.5" stroke="#434343"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-204 -804) translate(204 804)"/> 4 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.1" d="M6 9.568L2.601 11 2.975 7.467 0.5 4.82 4.13 4.068 6 1 7.87 4.068 11.5 4.82 9.025 7.467 9.399 11z" transform="translate(-204 -804) translate(204 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H12V12H0z" transform="translate(-324 -805) translate(324 805)"/> 4 | <path fill="#434343" d="M5 0c.552 0 1 .448 1 1v1h5.5c.276 0 .5.224.5.5v8c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V1c0-.552.448-1 1-1h4zm0 1H1v9h10V3H5V1z" transform="translate(-324 -805) translate(324 805)"/> 5 | <path fill="#434343" d="M1 2L5 2 5 3 1 3z" transform="translate(-324 -805) translate(324 805)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <g transform="translate(-252 -804) translate(252 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <circle cx="6" cy="6" r="2.5" stroke="#444"/> 6 | <path fill="#434343" d="M11.5 0c.276 0 .5.224.5.5v11c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V.5C0 .224.224 0 .5 0h11zM11 1H1v10h10V1z"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12" viewBox="0 0 12 12"> 2 | <defs> 3 | <path id="rfn4rylffa" d="M7 12c-.335 0-.663-.025-.983-.074C3.171 11.492 1 9.205 1 6.444c0-1.363.534-2.613 1.415-3.58"/> 4 | <mask id="6f9gn2dysb" width="6" height="9.136" x="0" y="0" fill="#fff" maskUnits="objectBoundingBox"> 5 | <use xlink:href="#rfn4rylffa"/> 6 | </mask> 7 | </defs> 8 | <g fill="none" fill-rule="evenodd" > 9 | <g transform="translate(-132 -804) translate(132 804)"> 10 | <path d="M0 0.5H12V12.5H0z"/> 11 | <path fill="#434343" d="M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z"/> 12 | <use stroke="#434343" stroke-dasharray="2 1.25" stroke-width="4" mask="url(#6f9gn2dysb)" xlink:href="#rfn4rylffa"/> 13 | <path fill="#434343" d="M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z" transform="matrix(-1 0 0 1 9.543 0)"/> 14 | </g> 15 | </g> 16 | </svg> 17 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-180 -804) translate(180 804)"/> 4 | <path fill="#434343" d="M11.5 4c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5h-7c-.276 0-.5-.224-.5-.5V8.8h1V11h6V5H8.341l-.568-1H11.5z" transform="translate(-180 -804) translate(180 804)"/> 5 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M4.5 0.5L8.5 7.611 0.5 7.611z" transform="translate(-180 -804) translate(180 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-228 -804) translate(228 804)"/> 4 | <path fill="#434343" d="M2 1h8c.552 0 1 .448 1 1H1c0-.552.448-1 1-1z" transform="translate(-228 -804) translate(228 804)"/> 5 | <path fill="#434343" d="M1 1H2V3H1zM10 1H11V3H10zM5.5 1L6.5 1 6.5 11 5.5 11z" transform="translate(-228 -804) translate(228 804)"/> 6 | <path fill="#434343" d="M4 10H8V11H4z" transform="translate(-228 -804) translate(228 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-history.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H24V24H0z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 4 | <path fill="#434343" d="M12.5 1C18.299 1 23 5.701 23 11.5S18.299 22 12.5 22c-5.29 0-9.665-3.911-10.394-8.999h1.012C3.838 17.534 7.764 21 12.5 21c5.247 0 9.5-4.253 9.5-9.5S17.747 2 12.5 2C8.49 2 5.06 4.485 3.666 8H3h4v1H2V4h1v3.022C4.68 3.462 8.303 1 12.5 1zm.5 5l-.001 5.291 2.537 2.537-.708.708L12.292 12H12V6h1z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-arrow-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-arrow-3.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-arrow.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-bubble.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-heart.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill-rule="nonzero" stroke="#434343" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/> 4 | <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/> 5 | <path fill="#434343" d="M25 3h1v9h-1z"/> 6 | <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-location.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g stroke="#434343"> 4 | <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/> 5 | <circle cx="16" cy="13" r="4.5"/> 6 | </g> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-polygon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-star-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon-star.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-mask-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#434343" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/> 5 | <path fill="#434343" d="M25 3h1v9h-1z"/> 6 | <path stroke="#434343" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <circle cx="12" cy="12" r="4.5" stroke="#434343"/> 4 | <path fill="#434343" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-redo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#434343" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/> 5 | <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#434343" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/> 5 | <path stroke="#434343" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-rotate-clockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#434343" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/> 4 | <path stroke="#434343" stroke-linecap="square" d="M16 1.5l4 3-4 3"/> 5 | <path fill="#434343" fill-rule="nonzero" d="M16 4h4v1h-4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-rotate-counterclockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#434343" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/> 4 | <path fill="#434343" fill-rule="nonzero" d="M12 4h4v1h-4z"/> 5 | <path stroke="#434343" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#434343" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/> 5 | <path stroke="#434343" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-shape-circle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <circle cx="16" cy="16" r="14.5" stroke="#434343"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-shape-rectangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <rect width="27" height="27" x="2.5" y="2.5" stroke="#434343" rx="1"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-shape-triangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#434343" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/> 4 | <path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-text-align-center.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#434343" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-text-align-left.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#434343" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-text-align-right.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#434343" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-text-bold.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#434343" d="M7 2h2v2H7zM7 28h2v2H7z"/> 5 | <path stroke="#434343" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-text-italic.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#434343" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-text-underline.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#434343" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/> 5 | <path fill="#434343" d="M5 2h5v1H5zM22 2h5v1h-5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#434343" fill-rule="evenodd"> 3 | <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/> 4 | <path d="M11 3h1v18h-1z"/> 5 | <path d="M10 20h3v1h-3z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-undo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M24 0H0v24h24z" opacity=".5"/> 4 | <path fill="#434343" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/> 5 | <path stroke="#434343" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-zoom-zoom-in.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g transform="translate(-229 -290) translate(229 290)"> 4 | <circle cx="10.5" cy="10.5" r="9" stroke="#434343"/> 5 | <path fill="#434343" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 6 | <path fill="#434343" d="M7 10H14V11H7z"/> 7 | <path fill="#434343" d="M10 7H11V14H10z"/> 8 | </g> 9 | </g> 10 | </svg> 11 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-a/ic-zoom-zoom-out.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g transform="translate(-263 -290) translate(263 290)"> 4 | <circle cx="10.5" cy="10.5" r="9" stroke="#434343"/> 5 | <path fill="#434343" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 6 | <path fill="#434343" d="M7 10H14V11H7z"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-apply.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#555555" d="M4 12.011l5 5L20.011 6"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-cancel.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#555555" d="M6 6l12 12M18 6L6 18"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#555555" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/> 5 | <path fill="#555555" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-delete-all.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#555555" fill-rule="evenodd"> 3 | <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#555555" fill-rule="evenodd"> 3 | <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-draw-free.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-draw-line.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" d="M2 15.5h28"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#555555" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/> 4 | <path fill="#555555" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#555555" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/> 5 | <path fill="#555555" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-flip-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="31" height="32" viewBox="0 0 31 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M31 0H0v32h31z"/> 4 | <path fill="#555555" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/> 5 | <path stroke="#555555" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-flip-x.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M32 32H0V0h32z"/> 4 | <path fill="#555555" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-flip-y.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0v32h32V0z"/> 4 | <path fill="#555555" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#555555" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-check.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path stroke="#555555" d="M4.5 -1L1.5 2 6.5 7" transform="translate(-60 -804) translate(60 804) translate(2 3) rotate(-90 4 3)" /> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-84 -804) translate(84 804)"/> 4 | <path fill="#555555" d="M2 0h1v10c-.552 0-1-.448-1-1V0zM10 9v3H9V9h1zM9 2h1v6H9V2z" transform="translate(-84 -804) translate(84 804)"/> 5 | <path fill="#555555" d="M2 9H12V10H2zM9 2c.513 0 .936.386.993.883L10 3H3V2h6zM2 3H0V2h2v1z" transform="translate(-84 -804) translate(84 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g fill="#555555"> 4 | <path d="M2 9h8V1h1v8.5c0 .276-.224.5-.5.5h-9c-.276 0-.5-.224-.5-.5V1h1v8zM0 0H12V1H0z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 5 | <path d="M4 3H5V7H4zM7 3H8V7H7z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 6 | <path d="M4 1h4V0h1v1.5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V0h1v1z" transform="translate(-300 -804) translate(300 804) matrix(1 0 0 -1 0 2)"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 1H12V13H0z" transform="translate(-156 -804) translate(156 803)"/> 4 | <path stroke="#555555" d="M9.622 1.584l1.835 1.658-8.31 8.407L.5 12.5V11l9.122-9.416z" transform="translate(-156 -804) translate(156 803)"/> 5 | <path fill="#FFF" d="M7.628 3.753L10.378 3.753 10.378 4.253 7.628 4.253z" transform="translate(-156 -804) translate(156 803) rotate(45 9.003 4.003)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-276 -804) translate(276 804)"/> 4 | <path fill="#555555" d="M12 3v1H9V3h3zM7 4H0V3h7v1z" transform="translate(-276 -804) translate(276 804)"/> 5 | <path fill="#555555" d="M12 8v1H9V8h3zM7 9H0V8h7v1z" transform="translate(-276 -804) translate(276 804) matrix(-1 0 0 1 12 0)"/> 6 | <path fill="#555555" d="M8 1c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM4 7c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z" transform="translate(-276 -804) translate(276 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-108 -804) translate(108 804)"/> 4 | <path fill="#555555" d="M6 0L7 0 7 12 6 12zM11 10V9h1v1.5c0 .276-.224.5-.5.5H10v-1h1zM5 1v1H1v8h4v1H.5c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5H5zm7 5v2h-1V6h1zm0-3v2h-1V3h1zM9 1v1H7V1h2zm2.5 0c.276 0 .5.224.5.5V2h-2V1h1.5zM9 11H7v-1h2v1z" transform="translate(-108 -804) translate(108 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-group.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g transform="translate(-348 -804) translate(348 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <path fill="#555555" d="M1 9v2h1v1H.5c-.276 0-.5-.224-.5-.5V9h1zm11 1v1.5c0 .276-.224.5-.5.5H9v-1h2v-1h1zm-4 1v1H6v-1h2zm-3 0v1H3v-1h2zm7-4v2h-1V7h1zM1 6v2H0V6h1zm11-2v2h-1V4h1zM1 3v2H0V3h1zm10.5-3c.276 0 .5.224.5.5V3h-1V1h-1V0h1.5zM6 0v1H4V0h2zm3 0v1H7V0h2zM0 .5C0 .224.224 0 .5 0H3v1H1v1H0V.5zM9.5 4c.276 0 .5.224.5.5v5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V8.355c.317.094.652.145 1 .145V9h4V5h-.5c0-.348-.05-.683-.145-1H9.5z"/> 6 | <circle cx="5" cy="5" r="2.5" stroke="#555555"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-204 -804) translate(204 804)"/> 4 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.1" d="M6 9.568L2.601 11 2.975 7.467 0.5 4.82 4.13 4.068 6 1 7.87 4.068 11.5 4.82 9.025 7.467 9.399 11z" transform="translate(-204 -804) translate(204 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H12V12H0z" transform="translate(-324 -805) translate(324 805)"/> 4 | <path fill="#555555" d="M5 0c.552 0 1 .448 1 1v1h5.5c.276 0 .5.224.5.5v8c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V1c0-.552.448-1 1-1h4zm0 1H1v9h10V3H5V1z" transform="translate(-324 -805) translate(324 805)"/> 5 | <path fill="#555555" d="M1 2L5 2 5 3 1 3z" transform="translate(-324 -805) translate(324 805)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <g transform="translate(-252 -804) translate(252 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <circle cx="6" cy="6" r="2.5" stroke="#444"/> 6 | <path fill="#555555" d="M11.5 0c.276 0 .5.224.5.5v11c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V.5C0 .224.224 0 .5 0h11zM11 1H1v10h10V1z"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12" viewBox="0 0 12 12"> 2 | <defs> 3 | <path id="rfn4rylffa" d="M7 12c-.335 0-.663-.025-.983-.074C3.171 11.492 1 9.205 1 6.444c0-1.363.534-2.613 1.415-3.58"/> 4 | <mask id="6f9gn2dysb" width="6" height="9.136" x="0" y="0" fill="#fff" maskUnits="objectBoundingBox"> 5 | <use xlink:href="#rfn4rylffa"/> 6 | </mask> 7 | </defs> 8 | <g fill="none" fill-rule="evenodd" > 9 | <g transform="translate(-132 -804) translate(132 804)"> 10 | <path d="M0 0.5H12V12.5H0z"/> 11 | <path fill="#555555" d="M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z"/> 12 | <use stroke="#555555" stroke-dasharray="2 1.25" stroke-width="4" mask="url(#6f9gn2dysb)" xlink:href="#rfn4rylffa"/> 13 | <path fill="#555555" d="M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z" transform="matrix(-1 0 0 1 9.543 0)"/> 14 | </g> 15 | </g> 16 | </svg> 17 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-180 -804) translate(180 804)"/> 4 | <path fill="#555555" d="M11.5 4c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5h-7c-.276 0-.5-.224-.5-.5V8.8h1V11h6V5H8.341l-.568-1H11.5z" transform="translate(-180 -804) translate(180 804)"/> 5 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M4.5 0.5L8.5 7.611 0.5 7.611z" transform="translate(-180 -804) translate(180 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-228 -804) translate(228 804)"/> 4 | <path fill="#555555" d="M2 1h8c.552 0 1 .448 1 1H1c0-.552.448-1 1-1z" transform="translate(-228 -804) translate(228 804)"/> 5 | <path fill="#555555" d="M1 1H2V3H1zM10 1H11V3H10zM5.5 1L6.5 1 6.5 11 5.5 11z" transform="translate(-228 -804) translate(228 804)"/> 6 | <path fill="#555555" d="M4 10H8V11H4z" transform="translate(-228 -804) translate(228 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-history.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H24V24H0z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 4 | <path fill="#555555" d="M12.5 1C18.299 1 23 5.701 23 11.5S18.299 22 12.5 22c-5.29 0-9.665-3.911-10.394-8.999h1.012C3.838 17.534 7.764 21 12.5 21c5.247 0 9.5-4.253 9.5-9.5S17.747 2 12.5 2C8.49 2 5.06 4.485 3.666 8H3h4v1H2V4h1v3.022C4.68 3.462 8.303 1 12.5 1zm.5 5l-.001 5.291 2.537 2.537-.708.708L12.292 12H12V6h1z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-arrow-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-arrow-3.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-arrow.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-bubble.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-heart.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill-rule="nonzero" stroke="#555555" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/> 4 | <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/> 5 | <path fill="#555555" d="M25 3h1v9h-1z"/> 6 | <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-location.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g stroke="#555555"> 4 | <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/> 5 | <circle cx="16" cy="13" r="4.5"/> 6 | </g> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-polygon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-star-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon-star.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-mask-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#555555" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/> 5 | <path fill="#555555" d="M25 3h1v9h-1z"/> 6 | <path stroke="#555555" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <circle cx="12" cy="12" r="4.5" stroke="#555555"/> 4 | <path fill="#555555" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-redo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#555555" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/> 5 | <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#555555" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/> 5 | <path stroke="#555555" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-rotate-clockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#555555" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/> 4 | <path stroke="#555555" stroke-linecap="square" d="M16 1.5l4 3-4 3"/> 5 | <path fill="#555555" fill-rule="nonzero" d="M16 4h4v1h-4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-rotate-counterclockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#555555" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/> 4 | <path fill="#555555" fill-rule="nonzero" d="M12 4h4v1h-4z"/> 5 | <path stroke="#555555" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#555555" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/> 5 | <path stroke="#555555" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-shape-circle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <circle cx="16" cy="16" r="14.5" stroke="#555555"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-shape-rectangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <rect width="27" height="27" x="2.5" y="2.5" stroke="#555555" rx="1"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-shape-triangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#555555" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/> 4 | <path stroke="#555555" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-text-align-center.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#555555" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-text-align-left.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#555555" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-text-align-right.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#555555" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-text-bold.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#555555" d="M7 2h2v2H7zM7 28h2v2H7z"/> 5 | <path stroke="#555555" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-text-italic.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#555555" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-text-underline.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#555555" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/> 5 | <path fill="#555555" d="M5 2h5v1H5zM22 2h5v1h-5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#555555" fill-rule="evenodd"> 3 | <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/> 4 | <path d="M11 3h1v18h-1z"/> 5 | <path d="M10 20h3v1h-3z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-undo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M24 0H0v24h24z" opacity=".5"/> 4 | <path fill="#555555" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/> 5 | <path stroke="#555555" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-zoom-zoom-in.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g> 4 | <g transform="translate(-229 -290) translate(229 290)"> 5 | <circle cx="10.5" cy="10.5" r="9" stroke="#555555"/> 6 | <path fill="#555555" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 7 | <path fill="#555555" d="M7 10H14V11H7z"/> 8 | <path fill="#555555" d="M10 7H11V14H10z"/> 9 | </g> 10 | </g> 11 | </g> 12 | </svg> 13 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-b/ic-zoom-zoom-out.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g> 4 | <g transform="translate(-263 -290) translate(263 290)"> 5 | <circle cx="10.5" cy="10.5" r="9" stroke="#555555"/> 6 | <path fill="#555555" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 7 | <path fill="#555555" d="M7 10H14V11H7z"/> 8 | </g> 9 | </g> 10 | </g> 11 | </svg> 12 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-apply.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#e9e9e9" d="M4 12.011l5 5L20.011 6"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-cancel.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#e9e9e9" d="M6 6l12 12M18 6L6 18"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#e9e9e9" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/> 5 | <path fill="#e9e9e9" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-delete-all.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#e9e9e9" fill-rule="evenodd"> 3 | <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#e9e9e9" fill-rule="evenodd"> 3 | <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-draw-free.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-draw-line.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" d="M2 15.5h28"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#e9e9e9" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/> 4 | <path fill="#e9e9e9" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#e9e9e9" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/> 5 | <path fill="#e9e9e9" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-flip-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="31" height="32" viewBox="0 0 31 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M31 0H0v32h31z"/> 4 | <path fill="#e9e9e9" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/> 5 | <path stroke="#e9e9e9" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-flip-x.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M32 32H0V0h32z"/> 4 | <path fill="#e9e9e9" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-flip-y.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0v32h32V0z"/> 4 | <path fill="#e9e9e9" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#e9e9e9" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-check.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path stroke="#e9e9e9" d="M4.5 -1L1.5 2 6.5 7" transform="translate(-60 -804) translate(60 804) translate(2 3) rotate(-90 4 3)" /> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-84 -804) translate(84 804)"/> 4 | <path fill="#e9e9e9" d="M2 0h1v10c-.552 0-1-.448-1-1V0zM10 9v3H9V9h1zM9 2h1v6H9V2z" transform="translate(-84 -804) translate(84 804)"/> 5 | <path fill="#e9e9e9" d="M2 9H12V10H2zM9 2c.513 0 .936.386.993.883L10 3H3V2h6zM2 3H0V2h2v1z" transform="translate(-84 -804) translate(84 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g fill="#e9e9e9"> 4 | <path d="M2 9h8V1h1v8.5c0 .276-.224.5-.5.5h-9c-.276 0-.5-.224-.5-.5V1h1v8zM0 0H12V1H0z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 5 | <path d="M4 3H5V7H4zM7 3H8V7H7z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 6 | <path d="M4 1h4V0h1v1.5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V0h1v1z" transform="translate(-300 -804) translate(300 804) matrix(1 0 0 -1 0 2)"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 1H12V13H0z" transform="translate(-156 -804) translate(156 803)"/> 4 | <path stroke="#e9e9e9" d="M9.622 1.584l1.835 1.658-8.31 8.407L.5 12.5V11l9.122-9.416z" transform="translate(-156 -804) translate(156 803)"/> 5 | <path fill="#FFF" d="M7.628 3.753L10.378 3.753 10.378 4.253 7.628 4.253z" transform="translate(-156 -804) translate(156 803) rotate(45 9.003 4.003)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-276 -804) translate(276 804)"/> 4 | <path fill="#e9e9e9" d="M12 3v1H9V3h3zM7 4H0V3h7v1z" transform="translate(-276 -804) translate(276 804)"/> 5 | <path fill="#e9e9e9" d="M12 8v1H9V8h3zM7 9H0V8h7v1z" transform="translate(-276 -804) translate(276 804) matrix(-1 0 0 1 12 0)"/> 6 | <path fill="#e9e9e9" d="M8 1c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM4 7c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z" transform="translate(-276 -804) translate(276 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-108 -804) translate(108 804)"/> 4 | <path fill="#e9e9e9" d="M6 0L7 0 7 12 6 12zM11 10V9h1v1.5c0 .276-.224.5-.5.5H10v-1h1zM5 1v1H1v8h4v1H.5c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5H5zm7 5v2h-1V6h1zm0-3v2h-1V3h1zM9 1v1H7V1h2zm2.5 0c.276 0 .5.224.5.5V2h-2V1h1.5zM9 11H7v-1h2v1z" transform="translate(-108 -804) translate(108 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-group.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g transform="translate(-348 -804) translate(348 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <path fill="#e9e9e9" d="M1 9v2h1v1H.5c-.276 0-.5-.224-.5-.5V9h1zm11 1v1.5c0 .276-.224.5-.5.5H9v-1h2v-1h1zm-4 1v1H6v-1h2zm-3 0v1H3v-1h2zm7-4v2h-1V7h1zM1 6v2H0V6h1zm11-2v2h-1V4h1zM1 3v2H0V3h1zm10.5-3c.276 0 .5.224.5.5V3h-1V1h-1V0h1.5zM6 0v1H4V0h2zm3 0v1H7V0h2zM0 .5C0 .224.224 0 .5 0H3v1H1v1H0V.5zM9.5 4c.276 0 .5.224.5.5v5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V8.355c.317.094.652.145 1 .145V9h4V5h-.5c0-.348-.05-.683-.145-1H9.5z"/> 6 | <circle cx="5" cy="5" r="2.5" stroke="#e9e9e9"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-204 -804) translate(204 804)"/> 4 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.1" d="M6 9.568L2.601 11 2.975 7.467 0.5 4.82 4.13 4.068 6 1 7.87 4.068 11.5 4.82 9.025 7.467 9.399 11z" transform="translate(-204 -804) translate(204 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H12V12H0z" transform="translate(-324 -805) translate(324 805)"/> 4 | <path fill="#e9e9e9" d="M5 0c.552 0 1 .448 1 1v1h5.5c.276 0 .5.224.5.5v8c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V1c0-.552.448-1 1-1h4zm0 1H1v9h10V3H5V1z" transform="translate(-324 -805) translate(324 805)"/> 5 | <path fill="#e9e9e9" d="M1 2L5 2 5 3 1 3z" transform="translate(-324 -805) translate(324 805)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <g transform="translate(-252 -804) translate(252 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <circle cx="6" cy="6" r="2.5" stroke="#444"/> 6 | <path fill="#e9e9e9" d="M11.5 0c.276 0 .5.224.5.5v11c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V.5C0 .224.224 0 .5 0h11zM11 1H1v10h10V1z"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12" viewBox="0 0 12 12"> 2 | <defs> 3 | <path id="rfn4rylffa" d="M7 12c-.335 0-.663-.025-.983-.074C3.171 11.492 1 9.205 1 6.444c0-1.363.534-2.613 1.415-3.58"/> 4 | <mask id="6f9gn2dysb" width="6" height="9.136" x="0" y="0" fill="#fff" maskUnits="objectBoundingBox"> 5 | <use xlink:href="#rfn4rylffa"/> 6 | </mask> 7 | </defs> 8 | <g fill="none" fill-rule="evenodd" > 9 | <g transform="translate(-132 -804) translate(132 804)"> 10 | <path d="M0 0.5H12V12.5H0z"/> 11 | <path fill="#e9e9e9" d="M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z"/> 12 | <use stroke="#e9e9e9" stroke-dasharray="2 1.25" stroke-width="4" mask="url(#6f9gn2dysb)" xlink:href="#rfn4rylffa"/> 13 | <path fill="#e9e9e9" d="M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z" transform="matrix(-1 0 0 1 9.543 0)"/> 14 | </g> 15 | </g> 16 | </svg> 17 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-180 -804) translate(180 804)"/> 4 | <path fill="#e9e9e9" d="M11.5 4c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5h-7c-.276 0-.5-.224-.5-.5V8.8h1V11h6V5H8.341l-.568-1H11.5z" transform="translate(-180 -804) translate(180 804)"/> 5 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M4.5 0.5L8.5 7.611 0.5 7.611z" transform="translate(-180 -804) translate(180 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-228 -804) translate(228 804)"/> 4 | <path fill="#e9e9e9" d="M2 1h8c.552 0 1 .448 1 1H1c0-.552.448-1 1-1z" transform="translate(-228 -804) translate(228 804)"/> 5 | <path fill="#e9e9e9" d="M1 1H2V3H1zM10 1H11V3H10zM5.5 1L6.5 1 6.5 11 5.5 11z" transform="translate(-228 -804) translate(228 804)"/> 6 | <path fill="#e9e9e9" d="M4 10H8V11H4z" transform="translate(-228 -804) translate(228 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-history.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H24V24H0z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 4 | <path fill="#e9e9e9" d="M12.5 1C18.299 1 23 5.701 23 11.5S18.299 22 12.5 22c-5.29 0-9.665-3.911-10.394-8.999h1.012C3.838 17.534 7.764 21 12.5 21c5.247 0 9.5-4.253 9.5-9.5S17.747 2 12.5 2C8.49 2 5.06 4.485 3.666 8H3h4v1H2V4h1v3.022C4.68 3.462 8.303 1 12.5 1zm.5 5l-.001 5.291 2.537 2.537-.708.708L12.292 12H12V6h1z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-arrow-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-arrow-3.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-arrow.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-bubble.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-heart.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill-rule="nonzero" stroke="#e9e9e9" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/> 4 | <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/> 5 | <path fill="#e9e9e9" d="M25 3h1v9h-1z"/> 6 | <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-location.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g stroke="#e9e9e9"> 4 | <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/> 5 | <circle cx="16" cy="13" r="4.5"/> 6 | </g> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-polygon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-star-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon-star.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-mask-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#e9e9e9" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/> 5 | <path fill="#e9e9e9" d="M25 3h1v9h-1z"/> 6 | <path stroke="#e9e9e9" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <circle cx="12" cy="12" r="4.5" stroke="#e9e9e9"/> 4 | <path fill="#e9e9e9" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-redo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#e9e9e9" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/> 5 | <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#e9e9e9" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/> 5 | <path stroke="#e9e9e9" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-rotate-clockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#e9e9e9" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/> 4 | <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l4 3-4 3"/> 5 | <path fill="#e9e9e9" fill-rule="nonzero" d="M16 4h4v1h-4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-rotate-counterclockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#e9e9e9" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/> 4 | <path fill="#e9e9e9" fill-rule="nonzero" d="M12 4h4v1h-4z"/> 5 | <path stroke="#e9e9e9" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#e9e9e9" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/> 5 | <path stroke="#e9e9e9" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-shape-circle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <circle cx="16" cy="16" r="14.5" stroke="#e9e9e9"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-shape-rectangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <rect width="27" height="27" x="2.5" y="2.5" stroke="#e9e9e9" rx="1"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-shape-triangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#e9e9e9" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/> 4 | <path stroke="#e9e9e9" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-text-align-center.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#e9e9e9" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-text-align-left.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#e9e9e9" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-text-align-right.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#e9e9e9" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-text-bold.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#e9e9e9" d="M7 2h2v2H7zM7 28h2v2H7z"/> 5 | <path stroke="#e9e9e9" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-text-italic.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#e9e9e9" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-text-underline.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#e9e9e9" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/> 5 | <path fill="#e9e9e9" d="M5 2h5v1H5zM22 2h5v1h-5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#e9e9e9" fill-rule="evenodd"> 3 | <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/> 4 | <path d="M11 3h1v18h-1z"/> 5 | <path d="M10 20h3v1h-3z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-undo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M24 0H0v24h24z" opacity=".5"/> 4 | <path fill="#e9e9e9" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/> 5 | <path stroke="#e9e9e9" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-zoom-zoom-in.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g> 4 | <g transform="translate(-229 -290) translate(229 290)"> 5 | <circle cx="10.5" cy="10.5" r="9" stroke="#e9e9e9"/> 6 | <path fill="#e9e9e9" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 7 | <path fill="#e9e9e9" d="M7 10H14V11H7z"/> 8 | <path fill="#e9e9e9" d="M10 7H11V14H10z"/> 9 | </g> 10 | </g> 11 | </g> 12 | </svg> 13 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-c/ic-zoom-zoom-out.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g> 4 | <g transform="translate(-263 -290) translate(263 290)"> 5 | <circle cx="10.5" cy="10.5" r="9" stroke="#e9e9e9"/> 6 | <path fill="#e9e9e9" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 7 | <path fill="#e9e9e9" d="M7 10H14V11H7z"/> 8 | </g> 9 | </g> 10 | </g> 11 | </svg> 12 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-apply.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#8a8a8a" d="M4 12.011l5 5L20.011 6"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-cancel.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path stroke="#8a8a8a" d="M6 6l12 12M18 6L6 18"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#8a8a8a" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"/> 5 | <path fill="#8a8a8a" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-delete-all.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#8a8a8a" fill-rule="evenodd"> 3 | <path d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#8a8a8a" fill-rule="evenodd"> 3 | <path d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"/> 4 | <path d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-draw-free.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-draw-line.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" d="M2 15.5h28"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#8a8a8a" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"/> 4 | <path fill="#8a8a8a" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#8a8a8a" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"/> 5 | <path fill="#8a8a8a" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-flip-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="31" height="32" viewBox="0 0 31 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M31 0H0v32h31z"/> 4 | <path fill="#8a8a8a" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"/> 5 | <path stroke="#8a8a8a" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-flip-x.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M32 32H0V0h32z"/> 4 | <path fill="#8a8a8a" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-flip-y.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0v32h32V0z"/> 4 | <path fill="#8a8a8a" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#8a8a8a" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-check.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path stroke="#8a8a8a" d="M4.5 -1L1.5 2 6.5 7" transform="translate(-60 -804) translate(60 804) translate(2 3) rotate(-90 4 3)" /> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-crop.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-84 -804) translate(84 804)"/> 4 | <path fill="#8a8a8a" d="M2 0h1v10c-.552 0-1-.448-1-1V0zM10 9v3H9V9h1zM9 2h1v6H9V2z" transform="translate(-84 -804) translate(84 804)"/> 5 | <path fill="#8a8a8a" d="M2 9H12V10H2zM9 2c.513 0 .936.386.993.883L10 3H3V2h6zM2 3H0V2h2v1z" transform="translate(-84 -804) translate(84 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-delete.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g fill="#8a8a8a"> 4 | <path d="M2 9h8V1h1v8.5c0 .276-.224.5-.5.5h-9c-.276 0-.5-.224-.5-.5V1h1v8zM0 0H12V1H0z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 5 | <path d="M4 3H5V7H4zM7 3H8V7H7z" transform="translate(-300 -804) translate(300 804) translate(0 2)"/> 6 | <path d="M4 1h4V0h1v1.5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V0h1v1z" transform="translate(-300 -804) translate(300 804) matrix(1 0 0 -1 0 2)"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-draw.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 1H12V13H0z" transform="translate(-156 -804) translate(156 803)"/> 4 | <path stroke="#8a8a8a" d="M9.622 1.584l1.835 1.658-8.31 8.407L.5 12.5V11l9.122-9.416z" transform="translate(-156 -804) translate(156 803)"/> 5 | <path fill="#FFF" d="M7.628 3.753L10.378 3.753 10.378 4.253 7.628 4.253z" transform="translate(-156 -804) translate(156 803) rotate(45 9.003 4.003)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-filter.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-276 -804) translate(276 804)"/> 4 | <path fill="#8a8a8a" d="M12 3v1H9V3h3zM7 4H0V3h7v1z" transform="translate(-276 -804) translate(276 804)"/> 5 | <path fill="#8a8a8a" d="M12 8v1H9V8h3zM7 9H0V8h7v1z" transform="translate(-276 -804) translate(276 804) matrix(-1 0 0 1 12 0)"/> 6 | <path fill="#8a8a8a" d="M8 1c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM4 7c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z" transform="translate(-276 -804) translate(276 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-flip.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-108 -804) translate(108 804)"/> 4 | <path fill="#8a8a8a" d="M6 0L7 0 7 12 6 12zM11 10V9h1v1.5c0 .276-.224.5-.5.5H10v-1h1zM5 1v1H1v8h4v1H.5c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5H5zm7 5v2h-1V6h1zm0-3v2h-1V3h1zM9 1v1H7V1h2zm2.5 0c.276 0 .5.224.5.5V2h-2V1h1.5zM9 11H7v-1h2v1z" transform="translate(-108 -804) translate(108 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-group.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g transform="translate(-348 -804) translate(348 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <path fill="#8a8a8a" d="M1 9v2h1v1H.5c-.276 0-.5-.224-.5-.5V9h1zm11 1v1.5c0 .276-.224.5-.5.5H9v-1h2v-1h1zm-4 1v1H6v-1h2zm-3 0v1H3v-1h2zm7-4v2h-1V7h1zM1 6v2H0V6h1zm11-2v2h-1V4h1zM1 3v2H0V3h1zm10.5-3c.276 0 .5.224.5.5V3h-1V1h-1V0h1.5zM6 0v1H4V0h2zm3 0v1H7V0h2zM0 .5C0 .224.224 0 .5 0H3v1H1v1H0V.5zM9.5 4c.276 0 .5.224.5.5v5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V8.355c.317.094.652.145 1 .145V9h4V5h-.5c0-.348-.05-.683-.145-1H9.5z"/> 6 | <circle cx="5" cy="5" r="2.5" stroke="#8a8a8a"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-204 -804) translate(204 804)"/> 4 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.1" d="M6 9.568L2.601 11 2.975 7.467 0.5 4.82 4.13 4.068 6 1 7.87 4.068 11.5 4.82 9.025 7.467 9.399 11z" transform="translate(-204 -804) translate(204 804)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H12V12H0z" transform="translate(-324 -805) translate(324 805)"/> 4 | <path fill="#8a8a8a" d="M5 0c.552 0 1 .448 1 1v1h5.5c.276 0 .5.224.5.5v8c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V1c0-.552.448-1 1-1h4zm0 1H1v9h10V3H5V1z" transform="translate(-324 -805) translate(324 805)"/> 5 | <path fill="#8a8a8a" d="M1 2L5 2 5 3 1 3z" transform="translate(-324 -805) translate(324 805)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <g transform="translate(-252 -804) translate(252 804)"> 4 | <path d="M0 0H12V12H0z"/> 5 | <circle cx="6" cy="6" r="2.5" stroke="#444"/> 6 | <path fill="#8a8a8a" d="M11.5 0c.276 0 .5.224.5.5v11c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V.5C0 .224.224 0 .5 0h11zM11 1H1v10h10V1z"/> 7 | </g> 8 | </g> 9 | </svg> 10 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12" viewBox="0 0 12 12"> 2 | <defs> 3 | <path id="rfn4rylffa" d="M7 12c-.335 0-.663-.025-.983-.074C3.171 11.492 1 9.205 1 6.444c0-1.363.534-2.613 1.415-3.58"/> 4 | <mask id="6f9gn2dysb" width="6" height="9.136" x="0" y="0" fill="#fff" maskUnits="objectBoundingBox"> 5 | <use xlink:href="#rfn4rylffa"/> 6 | </mask> 7 | </defs> 8 | <g fill="none" fill-rule="evenodd" > 9 | <g transform="translate(-132 -804) translate(132 804)"> 10 | <path d="M0 0.5H12V12.5H0z"/> 11 | <path fill="#8a8a8a" d="M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z"/> 12 | <use stroke="#8a8a8a" stroke-dasharray="2 1.25" stroke-width="4" mask="url(#6f9gn2dysb)" xlink:href="#rfn4rylffa"/> 13 | <path fill="#8a8a8a" d="M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z" transform="matrix(-1 0 0 1 9.543 0)"/> 14 | </g> 15 | </g> 16 | </svg> 17 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-180 -804) translate(180 804)"/> 4 | <path fill="#8a8a8a" d="M11.5 4c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5h-7c-.276 0-.5-.224-.5-.5V8.8h1V11h6V5H8.341l-.568-1H11.5z" transform="translate(-180 -804) translate(180 804)"/> 5 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M4.5 0.5L8.5 7.611 0.5 7.611z" transform="translate(-180 -804) translate(180 804)"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"> 2 | <g fill="none" fill-rule="evenodd" > 3 | <path d="M0 0H12V12H0z" transform="translate(-228 -804) translate(228 804)"/> 4 | <path fill="#8a8a8a" d="M2 1h8c.552 0 1 .448 1 1H1c0-.552.448-1 1-1z" transform="translate(-228 -804) translate(228 804)"/> 5 | <path fill="#8a8a8a" d="M1 1H2V3H1zM10 1H11V3H10zM5.5 1L6.5 1 6.5 11 5.5 11z" transform="translate(-228 -804) translate(228 804)"/> 6 | <path fill="#8a8a8a" d="M4 10H8V11H4z" transform="translate(-228 -804) translate(228 804)"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-history.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0H24V24H0z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 4 | <path fill="#8a8a8a" d="M12.5 1C18.299 1 23 5.701 23 11.5S18.299 22 12.5 22c-5.29 0-9.665-3.911-10.394-8.999h1.012C3.838 17.534 7.764 21 12.5 21c5.247 0 9.5-4.253 9.5-9.5S17.747 2 12.5 2C8.49 2 5.06 4.485 3.666 8H3h4v1H2V4h1v3.022C4.68 3.462 8.303 1 12.5 1zm.5 5l-.001 5.291 2.537 2.537-.708.708L12.292 12H12V6h1z" transform="translate(-740 -16) translate(547 8) translate(193 8)"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-arrow-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-arrow-3.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-arrow.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-bubble.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-heart.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill-rule="nonzero" stroke="#8a8a8a" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"/> 4 | <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"/> 5 | <path fill="#8a8a8a" d="M25 3h1v9h-1z"/> 6 | <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-location.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g stroke="#8a8a8a"> 4 | <path d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"/> 5 | <circle cx="16" cy="13" r="4.5"/> 6 | </g> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-polygon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-star-2.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon-star.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-icon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-mask-load.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#8a8a8a" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"/> 5 | <path fill="#8a8a8a" d="M25 3h1v9h-1z"/> 6 | <path stroke="#8a8a8a" d="M22 6l3.5-3.5L29 6"/> 7 | </g> 8 | </svg> 9 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-mask.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none"> 3 | <circle cx="12" cy="12" r="4.5" stroke="#8a8a8a"/> 4 | <path fill="#8a8a8a" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-redo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#8a8a8a" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"/> 5 | <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-reset.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z" opacity=".5"/> 4 | <path fill="#8a8a8a" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"/> 5 | <path stroke="#8a8a8a" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-rotate-clockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#8a8a8a" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"/> 4 | <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l4 3-4 3"/> 5 | <path fill="#8a8a8a" fill-rule="nonzero" d="M16 4h4v1h-4z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-rotate-counterclockwise.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#8a8a8a" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"/> 4 | <path fill="#8a8a8a" fill-rule="nonzero" d="M12 4h4v1h-4z"/> 5 | <path stroke="#8a8a8a" stroke-linecap="square" d="M16 1.5l-4 3 4 3"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-rotate.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h24v24H0z"/> 4 | <path fill="#8a8a8a" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"/> 5 | <path stroke="#8a8a8a" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-shape-circle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <circle cx="16" cy="16" r="14.5" stroke="#8a8a8a"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-shape-rectangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <rect width="27" height="27" x="2.5" y="2.5" stroke="#8a8a8a" rx="1"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-shape-triangle.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"/> 4 | </g> 5 | </svg> 6 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-shape.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path fill="#8a8a8a" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"/> 4 | <path stroke="#8a8a8a" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-text-align-center.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#8a8a8a" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-text-align-left.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#8a8a8a" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-text-align-right.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#8a8a8a" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-text-bold.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#8a8a8a" d="M7 2h2v2H7zM7 28h2v2H7z"/> 5 | <path stroke="#8a8a8a" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-text-italic.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#8a8a8a" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"/> 5 | </g> 6 | </svg> 7 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-text-underline.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M0 0h32v32H0z"/> 4 | <path fill="#8a8a8a" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"/> 5 | <path fill="#8a8a8a" d="M5 2h5v1H5zM22 2h5v1h-5z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-text.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="#8a8a8a" fill-rule="evenodd"> 3 | <path d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"/> 4 | <path d="M11 3h1v18h-1z"/> 5 | <path d="M10 20h3v1h-3z"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-undo.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <path d="M24 0H0v24h24z" opacity=".5"/> 4 | <path fill="#8a8a8a" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"/> 5 | <path stroke="#8a8a8a" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"/> 6 | </g> 7 | </svg> 8 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-zoom-zoom-in.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g> 4 | <g transform="translate(-229 -290) translate(229 290)"> 5 | <circle cx="10.5" cy="10.5" r="9" stroke="#8a8a8a"/> 6 | <path fill="#8a8a8a" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 7 | <path fill="#8a8a8a" d="M7 10H14V11H7z"/> 8 | <path fill="#8a8a8a" d="M10 7H11V14H10z"/> 9 | </g> 10 | </g> 11 | </g> 12 | </svg> 13 | -------------------------------------------------------------------------------- /apps/image-editor/src/svg/icon-d/ic-zoom-zoom-out.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> 2 | <g fill="none" fill-rule="evenodd"> 3 | <g> 4 | <g transform="translate(-263 -290) translate(263 290)"> 5 | <circle cx="10.5" cy="10.5" r="9" stroke="#8a8a8a"/> 6 | <path fill="#8a8a8a" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"/> 7 | <path fill="#8a8a8a" d="M7 10H14V11H7z"/> 8 | </g> 9 | </g> 10 | </g> 11 | </svg> 12 | -------------------------------------------------------------------------------- /apps/image-editor/tests/__snapshots__/theme.spec.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Theme _makeCssText() should return the cssText of the expected value for the object 1`] = `"background-color: #fff;background-image: url(./img/bg.png);border: 1px solid #ddd;color: #222;font-family: NotoSans, sans-serif;font-size: 12px"`; 4 | 5 | exports[`Theme _makeSvgItem() should create a svg path with the prefix when set the icon file 1`] = `"<use xlink:href=\\"fixtures/icon-d.svg#icon-d-ic-crop\\" class=\\"normal\\"/>"`; 6 | 7 | exports[`Theme _makeSvgItem() should create path prefix and use-default class when using the default icon 1`] = `"<use xlink:href=\\"#ic-crop\\" class=\\"normal use-default\\"/>"`; 8 | 9 | exports[`Theme getStyle() should return cssText if all members are objects 1`] = ` 10 | Object { 11 | "active": "color: #000;font-weight: normal", 12 | "normal": "color: #858585;font-weight: normal", 13 | } 14 | `; 15 | 16 | exports[`Theme getStyle() should return cssText in normal types 1`] = `"background-color: #fdba3b;border: 1px solid #fdba3b;color: #fff;font-family: NotoSans, sans-serif;font-size: 12px"`; 17 | -------------------------------------------------------------------------------- /apps/image-editor/tests/filter.spec.js: -------------------------------------------------------------------------------- 1 | import { fabric } from 'fabric'; 2 | import Graphics from '@/graphics'; 3 | import Filter from '@/component/filter'; 4 | 5 | import img from 'fixtures/sampleImage.jpg'; 6 | 7 | describe('Filter', () => { 8 | const graphics = new Graphics(document.createElement('canvas')); 9 | const filter = new Filter(graphics); 10 | 11 | beforeEach(async () => { 12 | const image = new fabric.Image(img); 13 | jest.spyOn(image, 'applyFilters').mockReturnValue({}); 14 | graphics.setCanvasImage('mockImage', image); 15 | 16 | await filter.add('colorFilter', {}); 17 | }); 18 | 19 | it('should add filter', () => { 20 | expect(filter.hasFilter('invert')).toBe(false); 21 | expect(filter.hasFilter('colorFilter')).toBe(true); 22 | }); 23 | 24 | it('should remove added filter', async () => { 25 | await filter.remove('colorFilter'); 26 | 27 | expect(filter.hasFilter('colorFilter')).toBe(false); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /apps/image-editor/tests/fixtures/TOAST UI Component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/tests/fixtures/TOAST UI Component.png -------------------------------------------------------------------------------- /apps/image-editor/tests/fixtures/mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/tests/fixtures/mask.png -------------------------------------------------------------------------------- /apps/image-editor/tests/fixtures/sampleImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/image-editor/tests/fixtures/sampleImage.jpg -------------------------------------------------------------------------------- /apps/image-editor/tests/index.js: -------------------------------------------------------------------------------- 1 | import { fabric } from 'fabric'; 2 | 3 | fabric.Object.prototype.objectCaching = false; 4 | -------------------------------------------------------------------------------- /apps/image-editor/tests/types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noEmit": true, 4 | "noImplicitAny": false 5 | }, 6 | "include": [ 7 | "../../index.d.ts", "./type-tests.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /apps/image-editor/tests/uiRange.spec.js: -------------------------------------------------------------------------------- 1 | import Range from '@/ui/tools/range'; 2 | import { defaultRotateRangeValues } from '@/consts'; 3 | 4 | describe('Range', () => { 5 | let range, input, slider; 6 | 7 | beforeEach(() => { 8 | input = document.createElement('input'); 9 | slider = document.createElement('div'); 10 | range = new Range({ slider, input }, defaultRotateRangeValues); 11 | }); 12 | 13 | it('should be incremented by one when keyCode 38 is found in the event handler with changeInputWithArrow', () => { 14 | const ev = { target: input, keyCode: 38 }; 15 | input.value = '3'; 16 | 17 | range.eventHandler.changeInputWithArrow(ev); 18 | 19 | expect(range.value).toBe(4); 20 | }); 21 | 22 | it('should be decremented by one when keyCode 40 is found in the event handler with changeInputWithArrow', () => { 23 | const ev = { target: input, keyCode: 40 }; 24 | input.value = '3'; 25 | 26 | range.eventHandler.changeInputWithArrow(ev); 27 | 28 | expect(range.value).toBe(2); 29 | }); 30 | 31 | it('should filter out any invalid input values', () => { 32 | const ev = { target: input, keyCode: 83, preventDefault: jest.fn() }; 33 | input.value = '-3!!6s0s'; 34 | 35 | range.eventHandler.changeInput(ev); 36 | 37 | expect(range.value).toBe(0); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /apps/image-editor/tests/zoom.spec.js: -------------------------------------------------------------------------------- 1 | import { fabric } from 'fabric'; 2 | import ImageEditor from '@/imageEditor'; 3 | 4 | import '@/command/loadImage'; 5 | 6 | import img from 'fixtures/sampleImage.jpg'; 7 | 8 | describe('Zoom', () => { 9 | let imageEditor, x, y, zoomLevel; 10 | 11 | beforeEach(async () => { 12 | imageEditor = new ImageEditor(document.createElement('div'), { 13 | cssMaxWidth: 700, 14 | cssMaxHeight: 500, 15 | }); 16 | const image = new fabric.Image(img); 17 | await imageEditor.loadImageFromURL(image, 'sampleImage'); 18 | x = 0; 19 | y = 0; 20 | zoomLevel = 1.0; 21 | }); 22 | 23 | afterEach(() => { 24 | imageEditor.destroy(); 25 | }); 26 | 27 | it('should change zoom of image', () => { 28 | zoomLevel += 1; 29 | imageEditor.zoom({ x, y, zoomLevel }); 30 | 31 | const canvas = imageEditor._graphics.getCanvas(); 32 | 33 | expect(canvas.getZoom()).toBe(zoomLevel); 34 | }); 35 | 36 | it('should reset zoom of image', () => { 37 | zoomLevel += 1; 38 | imageEditor.zoom({ x, y, zoomLevel }); 39 | imageEditor.resetZoom(); 40 | 41 | const canvas = imageEditor._graphics.getCanvas(); 42 | 43 | expect(canvas.getZoom()).toBe(1.0); 44 | }); 45 | }); 46 | -------------------------------------------------------------------------------- /apps/image-editor/tsBannerGenerator.js: -------------------------------------------------------------------------------- 1 | /*eslint-disable*/ 2 | var fs = require('fs'); 3 | var path = require('path'); 4 | var rootPkg = require('../../package.json'); 5 | var pkg = require('./package.json'); 6 | 7 | var tsVersion = /[0-9.]+/.exec(rootPkg.devDependencies.typescript)[0]; 8 | var declareFilePath = path.join(__dirname, 'index.d.ts'); 9 | var declareRows = []; 10 | var TS_BANNER = [ 11 | '// Type definitions for TOAST UI Image Editor v' + pkg.version, 12 | '// TypeScript Version: ' + tsVersion, 13 | ].join('\n'); 14 | 15 | fs.readFile(declareFilePath, 'utf8', function (error, data) { 16 | if (error) { 17 | throw error; 18 | } 19 | 20 | declareRows = data.toString().split('\n'); 21 | declareRows.splice(0, 2, TS_BANNER); 22 | 23 | fs.writeFile(declareFilePath, declareRows.join('\n'), 'utf8', function (error) { 24 | if (error) { 25 | throw error; 26 | } 27 | 28 | console.log('Completed Write Banner for Typescript!'); 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /apps/image-editor/tuidoc.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "header": { 3 | "logo": { 4 | "src": "https://uicdn.toast.com/toastui/img/tui-image-editor-bi-white.png" 5 | }, 6 | "title": { 7 | "text": "repo", 8 | "linkUrl": "https://github.com/nhn/tui.image-editor" 9 | } 10 | }, 11 | "footer": [ 12 | { 13 | "title": "NHN Cloud", 14 | "linkUrl": "https://github.com/nhn" 15 | }, 16 | { 17 | "title": "FE Development Lab", 18 | "linkUrl": "https://ui.toast.com/" 19 | } 20 | ], 21 | "main": { 22 | "filePath": "README.md" 23 | }, 24 | "api": { 25 | "filePath": "src/js/*.js", 26 | "fileLink": true, 27 | "permalink": false 28 | }, 29 | "examples": { 30 | "filePath": "examples", 31 | "titles": { 32 | "example01-includeUi": "1. Include ui", 33 | "example02-useApiDirect": "2. Use api direct (basic)", 34 | "example03-mobile": "3. Mobile" 35 | }, 36 | "globalErrorLogVariable": "errorLogs" 37 | }, 38 | "pathPrefix": "tui.image-editor" 39 | } 40 | -------------------------------------------------------------------------------- /apps/image-editor/webpack.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | const { merge } = require('webpack-merge'); 3 | 4 | const commonWebpackConfig = require('./webpack.common.config'); 5 | const prodWebpackConfig = require('./webpack.prod.config'); 6 | const devWebpackConfig = require('./webpack.dev.config'); 7 | 8 | module.exports = (env) => { 9 | const isProduction = env.WEBPACK_BUILD; 10 | 11 | const commonConfig = commonWebpackConfig(env); 12 | 13 | return merge(commonConfig, isProduction ? prodWebpackConfig(env) : devWebpackConfig()); 14 | }; 15 | -------------------------------------------------------------------------------- /apps/image-editor/webpack.dev.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | module.exports = () => ({ 3 | mode: 'development', 4 | devServer: { 5 | compress: true, 6 | open: true, 7 | hot: true, 8 | host: '0.0.0.0', 9 | static: './examples', 10 | allowedHosts: 'all', 11 | }, 12 | devtool: 'eval-source-map', 13 | }); 14 | -------------------------------------------------------------------------------- /apps/image-editor/webpack.prod.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | const { version, license } = require('./package.json'); 3 | 4 | const webpack = require('webpack'); 5 | const TerserPlugin = require('terser-webpack-plugin'); 6 | const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); 7 | 8 | module.exports = ({ minify }) => { 9 | const productionConfig = { 10 | mode: 'production', 11 | plugins: [ 12 | new webpack.BannerPlugin({ 13 | banner: ['TOAST UI ImageEditor', `@version ${version}`, `@license ${license}`].join('\n'), 14 | }), 15 | ], 16 | optimization: { 17 | minimize: false, 18 | }, 19 | }; 20 | 21 | if (minify) { 22 | productionConfig.optimization = { 23 | minimize: true, 24 | minimizer: [new TerserPlugin({ extractComments: false }), new CssMinimizerPlugin()], 25 | }; 26 | } 27 | 28 | return productionConfig; 29 | }; 30 | -------------------------------------------------------------------------------- /apps/react-image-editor/.babelrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../babel.config.json", 3 | "presets": ["@babel/preset-react"] 4 | } 5 | -------------------------------------------------------------------------------- /apps/react-image-editor/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['tui/es6', 'plugin:react/recommended', 'plugin:prettier/recommended'], 3 | plugins: ['react', 'prettier'], 4 | parser: '@babel/eslint-parser', 5 | parserOptions: { 6 | babelOptions: { 7 | presets: ['@babel/preset-react'], 8 | }, 9 | ecmaVersion: 7, 10 | sourceType: 'module', 11 | ecmaFeatures: { 12 | jsx: true, 13 | }, 14 | }, 15 | ignorePatterns: ['node_modules/*', 'dist'], 16 | rules: { 17 | 'react/prop-types': 0, 18 | }, 19 | settings: { 20 | react: { 21 | version: 'detect', 22 | }, 23 | }, 24 | }; 25 | -------------------------------------------------------------------------------- /apps/react-image-editor/.storybook/img/sampleImage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/react-image-editor/.storybook/img/sampleImage2.png -------------------------------------------------------------------------------- /apps/react-image-editor/.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | core: { 3 | builder: 'webpack5', 4 | }, 5 | stories: ['../stories/*.stories.js'], 6 | }; 7 | -------------------------------------------------------------------------------- /apps/react-image-editor/.storybook/preview.js: -------------------------------------------------------------------------------- 1 | import 'tui-image-editor/dist/tui-image-editor.css'; 2 | import 'tui-color-picker/dist/tui-color-picker.css'; 3 | -------------------------------------------------------------------------------- /apps/react-image-editor/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@toast-ui/react-image-editor", 3 | "version": "3.15.3", 4 | "description": "TOAST UI Image-Editor for React", 5 | "main": "dist/toastui-react-image-editor.js", 6 | "files": [ 7 | "dist", 8 | "src" 9 | ], 10 | "scripts": { 11 | "build": "webpack", 12 | "storybook": "start-storybook -s ./node_modules/tui-image-editor/dist/svg,.storybook -p 6006", 13 | "build-storybook": "build-storybook" 14 | }, 15 | "homepage": "https://github.com/nhn/tui.image-editor", 16 | "bugs": "https://github.com/nhn/tui.image-editor/issues", 17 | "author": "NHN Cloud. FE Development Lab <dl_javascript@nhn.com>", 18 | "repository": "https://github.com/nhn/tui.image-editor.git", 19 | "license": "MIT", 20 | "browserslist": [ 21 | "last 2 versions", 22 | "not ie <= 9" 23 | ], 24 | "peerDependencies": { 25 | "react": "^17.0.2" 26 | }, 27 | "devDependencies": { 28 | "react": "^17.0.2", 29 | "react-dom": "^17.0.2" 30 | }, 31 | "dependencies": { 32 | "fabric": "^4.2.0", 33 | "tui-image-editor": "^3.15.2" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /apps/react-image-editor/webpack.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | const path = require('path'); 3 | const { version, author, license } = require('./package.json'); 4 | 5 | const webpack = require('webpack'); 6 | 7 | module.exports = () => ({ 8 | mode: 'production', 9 | entry: './src/index.js', 10 | output: { 11 | filename: 'toastui-react-image-editor.js', 12 | path: path.resolve(__dirname, 'dist'), 13 | library: { type: 'commonjs2' }, 14 | }, 15 | externals: { 16 | 'tui-image-editor': { 17 | commonjs: 'tui-image-editor', 18 | commonjs2: 'tui-image-editor', 19 | }, 20 | react: { 21 | commonjs: 'react', 22 | commonjs2: 'react', 23 | }, 24 | }, 25 | module: { 26 | rules: [ 27 | { 28 | test: /\.js$/, 29 | include: path.resolve(__dirname, 'src'), 30 | use: { 31 | loader: 'babel-loader', 32 | }, 33 | }, 34 | ], 35 | }, 36 | plugins: [ 37 | new webpack.BannerPlugin({ 38 | banner: [ 39 | 'TOAST UI ImageEditor : React Wrapper', 40 | `@version ${version}`, 41 | `@author ${author}`, 42 | `@license ${license}`, 43 | ].join('\n'), 44 | }), 45 | ], 46 | }); 47 | -------------------------------------------------------------------------------- /apps/vue-image-editor/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['tui/es6', 'plugin:vue/recommended', 'plugin:prettier/recommended'], 3 | plugins: ['vue', 'prettier'], 4 | parser: 'vue-eslint-parser', 5 | parserOptions: { 6 | parser: '@babel/eslint-parser', 7 | ecmaVersion: 7, 8 | sourceType: 'module', 9 | }, 10 | ignorePatterns: ['node_modules/*', 'dist'], 11 | }; 12 | -------------------------------------------------------------------------------- /apps/vue-image-editor/.storybook/img/sampleImage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nhn/tui.image-editor/9ee993e21135a0bdb69d1400b19d89d7e78f7378/apps/vue-image-editor/.storybook/img/sampleImage2.png -------------------------------------------------------------------------------- /apps/vue-image-editor/.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | core: { 3 | builder: 'webpack5', 4 | }, 5 | stories: ['../stories/*.stories.js'], 6 | }; 7 | -------------------------------------------------------------------------------- /apps/vue-image-editor/.storybook/preview.js: -------------------------------------------------------------------------------- 1 | import 'tui-image-editor/dist/tui-image-editor.css'; 2 | import 'tui-color-picker/dist/tui-color-picker.css'; 3 | -------------------------------------------------------------------------------- /apps/vue-image-editor/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@toast-ui/vue-image-editor", 3 | "version": "3.15.3", 4 | "description": "TOAST UI Image-Editor for Vue", 5 | "main": "dist/toastui-vue-image-editor.js", 6 | "files": [ 7 | "dist", 8 | "src" 9 | ], 10 | "scripts": { 11 | "build": "webpack", 12 | "storybook": "start-storybook -s .storybook -p 6006" 13 | }, 14 | "homepage": "https://github.com/nhn/tui.image-editor", 15 | "bugs": "https://github.com/nhn/tui.image-editor/issues", 16 | "author": "NHN Cloud. FE Development Lab <dl_javascript@nhn.com>", 17 | "repository": "https://github.com/nhn/tui.image-editor.git", 18 | "license": "MIT", 19 | "browserslist": [ 20 | "last 2 versions", 21 | "not ie <= 9" 22 | ], 23 | "peerDependencies": { 24 | "vue": "^2.6.14" 25 | }, 26 | "devDependencies": { 27 | "@storybook/vue": "^6.3.12", 28 | "vue": "^2.6.14" 29 | }, 30 | "dependencies": { 31 | "fabric": "^4.2.0", 32 | "tui-image-editor": "^3.15.2" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /apps/vue-image-editor/src/index.js: -------------------------------------------------------------------------------- 1 | import ImageEditor from './ImageEditor.vue'; 2 | 3 | export { ImageEditor }; 4 | -------------------------------------------------------------------------------- /apps/vue-image-editor/stories/index.stories.js: -------------------------------------------------------------------------------- 1 | import { ImageEditor } from '../src/index'; 2 | 3 | export default { 4 | title: 'ImageEditor', 5 | }; 6 | 7 | const options = { 8 | includeUI: { 9 | loadImage: { 10 | path: 'img/sampleImage2.png', 11 | name: 'sampleImage2', 12 | }, 13 | initMenu: 'filter', 14 | uiSize: { 15 | width: '1000px', 16 | height: '700px', 17 | }, 18 | }, 19 | cssMaxWidth: 700, 20 | cssMaxHeight: 500, 21 | }; 22 | 23 | export const IncludeUI = () => { 24 | return { 25 | components: { 26 | ImageEditor, 27 | }, 28 | template: '<ImageEditor :includeUi="props.includeUI" :options="{...props}">test</ImageEditor>', 29 | created() { 30 | this.props = { ...options }; 31 | }, 32 | }; 33 | }; 34 | -------------------------------------------------------------------------------- /apps/vue-image-editor/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | filenameHashing: false, 3 | chainWebpack: (config) => { 4 | config.module.rule('svg').use('file-loader').options({ 5 | name: '[name].[ext]', 6 | outputPath: '', 7 | }); 8 | 9 | // https://cli.vuejs.org/guide/troubleshooting.html#symbolic-links-in-node-modules 10 | config.resolve.symlinks(false); 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["@babel/preset-env", { "targets": { "ie": "10" } }]], 3 | "plugins": [["@babel/plugin-transform-runtime", { "corejs": 3 }]] 4 | } 5 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tui-image-editor", 3 | "authors": ["NHN Cloud. FE Dev Lab <dl_javascript@nhn.com>"], 4 | "license": "MIT", 5 | "main": ["dist/tui-image-editor.js"], 6 | "ignore": [ 7 | "**/.*", 8 | "node_modules", 9 | "bower_components", 10 | "test", 11 | "tests", 12 | "src", 13 | "server", 14 | "data.js", 15 | "Gruntfile.js", 16 | "gulpfile.js", 17 | "conf.json", 18 | "package.json", 19 | ".gitignore", 20 | "samples", 21 | "index.js", 22 | "jsdoc.conf.json", 23 | "webpack.*.js" 24 | ], 25 | "dependencies": { 26 | "fabric": "4.2.0", 27 | "tui-code-snippet": "^1.5.0", 28 | "tui-color-picker": "^2.2.0" 29 | }, 30 | "devDependencies": { 31 | "tui-component-colorpicker": "~1.0.1", 32 | "filesaver": "*" 33 | }, 34 | "resolutions": { 35 | "tui-code-snippet": "^1.5.0", 36 | "tui-color-picker": "^2.2.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /docs/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | <!-- 2 | Thank you for your contribution. 3 | 4 | When it comes to write an issue, please, use the template below. 5 | To use the template is mandatory for submit new issue and we won't reply the issue that without the template. 6 | --> 7 | 8 | <!-- TEMPLATE --> 9 | 10 | ## Version 11 | 12 | <!-- Write the version of the grid you are currently using. --> 13 | 14 | ## Development Environment 15 | 16 | <!-- Write the browser type, OS and so on --> 17 | 18 | ## Current Behavior 19 | 20 | <!-- Write a description of the current operation. You can add sample code, 'CodePen' or 'jsfiddle' links. --> 21 | 22 | ```js 23 | // Write example code 24 | ``` 25 | 26 | ## Expected Behavior 27 | 28 | <!-- Write a description of the future action. --> 29 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": [ 3 | "apps/*" 4 | ], 5 | "version": "3.15.0" 6 | } 7 | --------------------------------------------------------------------------------