@progress/kendo-themes-html 14.7.0-dev.14 → 14.7.0-dev.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/imageeditor/imageeditor-canvas.spec.js +1 -0
- package/dist/cjs/imageeditor/imageeditor-option-list.js +1 -1
- package/dist/cjs/imageeditor/imageeditor-pane.js +1 -1
- package/dist/cjs/imageeditor/imageeditor-preview-thumbnail.js +1 -1
- package/dist/cjs/imageeditor/imageeditor-sidebar.js +1 -1
- package/dist/cjs/imageeditor/imageeditor-toolbar.js +1 -1
- package/dist/cjs/imageeditor/imageeditor.spec.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-adjustments-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-adjustments.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-blur-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-blur.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-crop-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-crop.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-filters-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-filters.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-frames-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-frames.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-insert-line-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-insert-line.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-insert-shape-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-insert-shape.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-insert-text-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-insert-text.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-normal.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-pixelate-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-pixelate.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-resize-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-resize.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-rotate-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-rotate.js +1 -1
- package/dist/cjs/imageeditor/templates/imageeditor-shadow-adaptive.js +1 -0
- package/dist/cjs/imageeditor/templates/imageeditor-shadow.js +1 -1
- package/dist/cjs/index.js +8 -8
- package/dist/esm/imageeditor/imageeditor-canvas.spec.mjs +1 -0
- package/dist/esm/imageeditor/imageeditor-option-list.mjs +1 -1
- package/dist/esm/imageeditor/imageeditor-pane.mjs +1 -1
- package/dist/esm/imageeditor/imageeditor-preview-thumbnail.mjs +1 -1
- package/dist/esm/imageeditor/imageeditor-sidebar.mjs +1 -1
- package/dist/esm/imageeditor/imageeditor-toolbar.mjs +1 -1
- package/dist/esm/imageeditor/imageeditor.spec.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-adjustments-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-adjustments.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-blur-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-blur.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-crop-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-crop.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-filters-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-filters.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-frames-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-frames.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-insert-line-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-insert-line.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-insert-shape-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-insert-shape.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-insert-text-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-insert-text.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-normal.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-pixelate-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-pixelate.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-resize-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-resize.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-rotate-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-rotate.mjs +1 -1
- package/dist/esm/imageeditor/templates/imageeditor-shadow-adaptive.mjs +1 -0
- package/dist/esm/imageeditor/templates/imageeditor-shadow.mjs +1 -1
- package/dist/esm/index.mjs +8 -8
- package/dist/types/imageeditor/constants.d.ts +9 -0
- package/dist/types/imageeditor/imageeditor-canvas.spec.d.ts +15 -0
- package/dist/types/imageeditor/imageeditor-option-list.d.ts +1 -0
- package/dist/types/imageeditor/imageeditor-pane.d.ts +2 -0
- package/dist/types/imageeditor/imageeditor-preview-thumbnail.d.ts +1 -0
- package/dist/types/imageeditor/imageeditor-sidebar.d.ts +8 -0
- package/dist/types/imageeditor/imageeditor-toolbar.d.ts +5 -4
- package/dist/types/imageeditor/imageeditor.spec.d.ts +7 -3
- package/dist/types/imageeditor/index.d.ts +13 -1
- package/dist/types/imageeditor/templates/imageeditor-adjustments-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-adjustments.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-blur-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-blur.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-crop-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-crop.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-filters-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-filters.d.ts +1 -6
- package/dist/types/imageeditor/templates/imageeditor-frames-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-frames.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-insert-line-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-insert-line.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-insert-shape-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-insert-shape.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-insert-text-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-insert-text.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-pixelate-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-pixelate.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-resize-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-resize.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-rotate-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-rotate.d.ts +1 -1
- package/dist/types/imageeditor/templates/imageeditor-shadow-adaptive.d.ts +1 -0
- package/dist/types/imageeditor/templates/imageeditor-shadow.d.ts +1 -1
- package/package.json +1 -1
- package/src/imageeditor/constants.ts +4 -0
- package/src/imageeditor/imageeditor-canvas.spec.tsx +30 -0
- package/src/imageeditor/imageeditor-option-list.tsx +2 -1
- package/src/imageeditor/imageeditor-pane.tsx +4 -1
- package/src/imageeditor/imageeditor-preview-thumbnail.tsx +3 -2
- package/src/imageeditor/imageeditor-sidebar.tsx +32 -19
- package/src/imageeditor/imageeditor-toolbar.tsx +27 -21
- package/src/imageeditor/imageeditor.spec.tsx +14 -6
- package/src/imageeditor/index.ts +13 -1
- package/src/imageeditor/templates/imageeditor-adjustments-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-adjustments.tsx +80 -57
- package/src/imageeditor/templates/imageeditor-blur-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-blur.tsx +9 -25
- package/src/imageeditor/templates/imageeditor-crop-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-crop.tsx +22 -28
- package/src/imageeditor/templates/imageeditor-filters-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-filters.tsx +32 -52
- package/src/imageeditor/templates/imageeditor-frames-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-frames.tsx +123 -149
- package/src/imageeditor/templates/imageeditor-insert-line-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-insert-line.tsx +24 -25
- package/src/imageeditor/templates/imageeditor-insert-shape-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-insert-shape.tsx +93 -50
- package/src/imageeditor/templates/imageeditor-insert-text-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-insert-text.tsx +24 -25
- package/src/imageeditor/templates/imageeditor-normal.tsx +2 -23
- package/src/imageeditor/templates/imageeditor-pixelate-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-pixelate.tsx +9 -24
- package/src/imageeditor/templates/imageeditor-resize-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-resize.tsx +10 -25
- package/src/imageeditor/templates/imageeditor-rotate-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-rotate.tsx +8 -23
- package/src/imageeditor/templates/imageeditor-shadow-adaptive.tsx +3 -0
- package/src/imageeditor/templates/imageeditor-shadow.tsx +20 -42
- package/src/imageeditor/tests/imageeditor-adaptive-panes.tsx +85 -0
- package/src/imageeditor/tests/imageeditor-adaptive-small.tsx +10 -305
- package/src/imageeditor/tests/imageeditor-adjustments-pane.tsx +2 -1
- package/src/imageeditor/tests/imageeditor-blur-pane.tsx +2 -1
- package/src/imageeditor/tests/imageeditor-crop-pane.tsx +2 -1
- package/src/imageeditor/tests/imageeditor-filters-pane.tsx +2 -1
- package/src/imageeditor/tests/imageeditor-frames-pane.tsx +4 -3
- package/src/imageeditor/tests/imageeditor-insert-shape-pane.tsx +1 -1
- package/src/imageeditor/tests/imageeditor-interactive-states.tsx +6 -6
- package/src/imageeditor/tests/imageeditor-pixelate-pane.tsx +2 -1
- package/src/imageeditor/tests/imageeditor-resize-pane.tsx +2 -1
- package/src/imageeditor/tests/imageeditor-responsive.tsx +4 -4
- package/src/imageeditor/tests/imageeditor-rotate-pane.tsx +2 -1
- package/src/imageeditor/tests/imageeditor-shadow-pane.tsx +2 -1
- package/dist/cjs/imageeditor/templates/imageeditor-disabled.js +0 -1
- package/dist/esm/imageeditor/templates/imageeditor-disabled.mjs +0 -1
- package/dist/types/imageeditor/templates/imageeditor-disabled.d.ts +0 -1
- package/src/imageeditor/templates/imageeditor-disabled.tsx +0 -54
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ImageEditor, ImageEditorPane } from "..";
|
|
1
|
+
import { ImageEditor, ImageEditorPane, ImageEditorCanvas } from "..";
|
|
2
2
|
import { Button } from "../../button";
|
|
3
|
+
import { ToolbarSeparator } from "../../toolbar";
|
|
3
4
|
import { ButtonGroup } from "../../button-group";
|
|
4
5
|
import { Combobox } from "../../combobox";
|
|
5
6
|
import { NumericTextbox } from "../../numerictextbox";
|
|
@@ -9,22 +10,6 @@ import { Icon } from "../../icon";
|
|
|
9
10
|
import { InputSuffixText } from "../../input";
|
|
10
11
|
import { Slider } from "../../slider";
|
|
11
12
|
|
|
12
|
-
const insertTextSidebarItems = [
|
|
13
|
-
<Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
|
|
14
|
-
<Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
|
|
15
|
-
<Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
|
|
16
|
-
<div className="k-separator" key="sidebar-separator-1"></div>,
|
|
17
|
-
<Button fillMode="flat" key="sidebar-button-4" icon="free-text" selected aria-label="Text"></Button>,
|
|
18
|
-
<Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
|
|
19
|
-
<div className="k-separator" key="sidebar-separator-2"></div>,
|
|
20
|
-
<Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur"></Button>,
|
|
21
|
-
<Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
|
|
22
|
-
<Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
|
|
23
|
-
<div className="k-separator" key="sidebar-separator-3"></div>,
|
|
24
|
-
<Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
|
|
25
|
-
<Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
|
|
26
|
-
];
|
|
27
|
-
|
|
28
13
|
export const ImageEditorInsertText = ({
|
|
29
14
|
selected = false,
|
|
30
15
|
fontFamily = "Trebuchet MS",
|
|
@@ -32,28 +17,42 @@ export const ImageEditorInsertText = ({
|
|
|
32
17
|
alignment = "center",
|
|
33
18
|
fillColor = "#000000",
|
|
34
19
|
opacity = 100,
|
|
20
|
+
adaptive,
|
|
21
|
+
imageSrc,
|
|
35
22
|
...props
|
|
36
23
|
}: any) => (
|
|
37
24
|
<ImageEditor
|
|
38
|
-
|
|
25
|
+
adaptive={adaptive}
|
|
26
|
+
activeTool="Text"
|
|
27
|
+
toolbarItems={adaptive && selected ? (
|
|
28
|
+
<>
|
|
29
|
+
<Button fillMode="flat" icon="squares-overlapping-plus" aria-label="Duplicate"></Button>
|
|
30
|
+
<Button fillMode="flat" icon="pencil" aria-label="Edit"></Button>
|
|
31
|
+
<ToolbarSeparator></ToolbarSeparator>
|
|
32
|
+
<Button fillMode="flat" icon="flip-horizontal" aria-label="Flip Horizontal"></Button>
|
|
33
|
+
<Button fillMode="flat" icon="flip-vertical" aria-label="Flip Vertical"></Button>
|
|
34
|
+
<ToolbarSeparator></ToolbarSeparator>
|
|
35
|
+
<Button fillMode="flat" icon="trash" aria-label="Delete"></Button>
|
|
36
|
+
</>
|
|
37
|
+
) : undefined}
|
|
39
38
|
actionPane={
|
|
40
|
-
<ImageEditorPane title="Text" actions={
|
|
39
|
+
<ImageEditorPane title="Text" adaptive={adaptive} confirmDisabled={!selected} actions={
|
|
41
40
|
<>
|
|
42
|
-
<Button>Remove</Button>
|
|
43
|
-
<Button themeColor="primary">Insert</Button>
|
|
41
|
+
<Button disabled={!selected}>Remove</Button>
|
|
42
|
+
<Button themeColor="primary" disabled={!selected}>Insert</Button>
|
|
44
43
|
</>
|
|
45
44
|
}>
|
|
46
45
|
<Form tag="div">
|
|
47
46
|
<FormField
|
|
48
47
|
label="Font Family"
|
|
49
48
|
editorId="text-font-family"
|
|
50
|
-
editor={ <Combobox id="text-font-family" prefix={<Icon icon="font-family" />} value={fontFamily} /> }
|
|
49
|
+
editor={ <Combobox id="text-font-family" showClearButton={false} prefix={<Icon icon="font-family" />} value={fontFamily} /> }
|
|
51
50
|
/>
|
|
52
51
|
<Fieldset layout="grid" cols={2} gutters={{ cols: "16px" }}>
|
|
53
52
|
<FormField
|
|
54
53
|
label="Font Size"
|
|
55
54
|
editorId="text-font-size"
|
|
56
|
-
editor={ <NumericTextbox id="text-font-size" showSpinButton={false} value={String(fontSize)} prefix={<Icon icon="font-size" />} /> }
|
|
55
|
+
editor={ <NumericTextbox id="text-font-size" showClearButton={false} showSpinButton={false} value={String(fontSize)} prefix={<Icon icon="font-size" />} /> }
|
|
57
56
|
/>
|
|
58
57
|
<FormField
|
|
59
58
|
label="Alignment"
|
|
@@ -86,7 +85,7 @@ export const ImageEditorInsertText = ({
|
|
|
86
85
|
/>
|
|
87
86
|
<FormField
|
|
88
87
|
label="Text Opacity"
|
|
89
|
-
editor={ <NumericTextbox id="text-opacity" showSpinButton={false} value={`${opacity}%`} prefix={<Icon icon="transparency" />} aria-label="Text Opacity" /> }
|
|
88
|
+
editor={ <NumericTextbox id="text-opacity" showClearButton={false} showSpinButton={false} value={`${opacity}%`} prefix={<Icon icon="transparency" />} aria-label="Text Opacity" /> }
|
|
90
89
|
/>
|
|
91
90
|
</Fieldset>
|
|
92
91
|
<Fieldset layout="grid" cols={2} gutters={{ cols: "16px" }}>
|
|
@@ -163,7 +162,7 @@ export const ImageEditorInsertText = ({
|
|
|
163
162
|
}
|
|
164
163
|
|
|
165
164
|
children={
|
|
166
|
-
<
|
|
165
|
+
<ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} />
|
|
167
166
|
}
|
|
168
167
|
{...props} />
|
|
169
168
|
);
|
|
@@ -1,36 +1,15 @@
|
|
|
1
1
|
import { ImageEditor } from "..";
|
|
2
2
|
import { ImageEditorPlaceholder } from "../imageeditor-placeholder";
|
|
3
|
-
import { Button } from "../../button";
|
|
4
|
-
import { Autocomplete } from "../../autocomplete";
|
|
5
|
-
import { ToolbarItem, ToolbarSeparator } from "../../toolbar";
|
|
6
3
|
|
|
7
|
-
// Freshly-loaded image: no edit history yet, so undo/redo are disabled
|
|
8
|
-
const normalToolbarItems = [
|
|
9
|
-
<Button fillMode="flat" key="toolbar-button-1" icon="image-add" aria-label="Image Add"></Button>,
|
|
10
|
-
<ToolbarSeparator key="toolbar-separator-1"></ToolbarSeparator>,
|
|
11
|
-
<Button fillMode="flat" key="toolbar-button-2" disabled icon="undo" aria-label="Undo"></Button>,
|
|
12
|
-
<Button fillMode="flat" key="toolbar-button-3" disabled icon="redo" aria-label="Redo"></Button>,
|
|
13
|
-
<ToolbarSeparator key="toolbar-separator-2"></ToolbarSeparator>,
|
|
14
|
-
<Button fillMode="flat" key="toolbar-button-4" icon="download" aria-label="Download"></Button>,
|
|
15
|
-
<div className="k-spacer" key="toolbar-spacer"></div>,
|
|
16
|
-
<Button fillMode="flat" key="toolbar-button-5" icon="zoom-in" aria-label="Zoom In"></Button>,
|
|
17
|
-
<ToolbarItem key="toolbar-item-1">
|
|
18
|
-
<Autocomplete fillMode="flat" value="Fit" showClearButton={false} aria-label="Zoom options" />
|
|
19
|
-
</ToolbarItem>,
|
|
20
|
-
<Button fillMode="flat" key="toolbar-button-6" icon="zoom-out" aria-label="Zoom Out"></Button>
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
// Without an image the editor shows the upload placeholder; passing children (the canvas) replaces it
|
|
24
4
|
export const ImageEditorNormal = (props: any) => (
|
|
25
5
|
<ImageEditor
|
|
26
|
-
|
|
27
|
-
placeholder={props.children ? undefined : (
|
|
6
|
+
placeholder={
|
|
28
7
|
<ImageEditorPlaceholder
|
|
29
8
|
icon="image-add"
|
|
30
9
|
title="Ready to create?"
|
|
31
10
|
text="Upload a JPEG, PNG, or WebP file to unlock the full capabilities of ImageEditor."
|
|
32
11
|
buttonText="Upload Image"
|
|
33
12
|
/>
|
|
34
|
-
|
|
13
|
+
}
|
|
35
14
|
{...props} />
|
|
36
15
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ImageEditor, ImageEditorPane } from "..";
|
|
1
|
+
import { ImageEditor, ImageEditorPane, ImageEditorCanvas } from "..";
|
|
2
2
|
import { Button } from "../../button";
|
|
3
3
|
import { NumericTextbox } from "../../numerictextbox";
|
|
4
4
|
import { Form, FormField } from "../../form";
|
|
@@ -8,33 +8,18 @@ import { Slider } from "../../slider";
|
|
|
8
8
|
import { InputSuffixText } from "../../input";
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
const
|
|
12
|
-
<Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
|
|
13
|
-
<Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
|
|
14
|
-
<Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
|
|
15
|
-
<div className="k-separator" key="sidebar-separator-1"></div>,
|
|
16
|
-
<Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
|
|
17
|
-
<Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
|
|
18
|
-
<div className="k-separator" key="sidebar-separator-2"></div>,
|
|
19
|
-
<Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" selected aria-label="Blur"></Button>,
|
|
20
|
-
<Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
|
|
21
|
-
<Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
|
|
22
|
-
<div className="k-separator" key="sidebar-separator-3"></div>,
|
|
23
|
-
<Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
|
|
24
|
-
<Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
|
|
25
|
-
];
|
|
26
|
-
|
|
27
|
-
export const ImageEditorPixelate = ({ selected = false, shape = "elliptical", intensity = 24, ...props }: any) => (
|
|
11
|
+
export const ImageEditorPixelate = ({ selected = false, shape = "elliptical", intensity = 0, adaptive, imageSrc, ...props }: any) => (
|
|
28
12
|
<ImageEditor
|
|
29
|
-
|
|
13
|
+
adaptive={adaptive}
|
|
14
|
+
activeTool="Blur"
|
|
30
15
|
actionPane={
|
|
31
|
-
<ImageEditorPane title="Pixelate" actions={
|
|
16
|
+
<ImageEditorPane title="Pixelate" adaptive={adaptive} confirmDisabled={!selected} actions={
|
|
32
17
|
<>
|
|
33
|
-
<Button>Reset</Button>
|
|
34
|
-
<Button themeColor="primary">Apply</Button>
|
|
18
|
+
<Button disabled={!selected}>Reset</Button>
|
|
19
|
+
<Button themeColor="primary" disabled={!selected}>Apply</Button>
|
|
35
20
|
</>
|
|
36
21
|
}>
|
|
37
|
-
<SegmentedControl thumbStyles={{ width: "50%", left: "50%" }} stretched aria-label="Redaction Tool"
|
|
22
|
+
<SegmentedControl thumbStyles={{ width: "50%", left: "50%" }} stretched aria-label="Redaction Tool">
|
|
38
23
|
<SegmentedControlButton icon="blur">Blur</SegmentedControlButton>
|
|
39
24
|
<SegmentedControlButton icon="grid" selected>Pixelate</SegmentedControlButton>
|
|
40
25
|
</SegmentedControl>
|
|
@@ -109,7 +94,7 @@ export const ImageEditorPixelate = ({ selected = false, shape = "elliptical", in
|
|
|
109
94
|
}
|
|
110
95
|
|
|
111
96
|
children={
|
|
112
|
-
<
|
|
97
|
+
<ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} />
|
|
113
98
|
}
|
|
114
99
|
{...props} />
|
|
115
100
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ImageEditor, ImageEditorPane, ImageEditorResizeHandles } from "..";
|
|
1
|
+
import { ImageEditor, ImageEditorPane, ImageEditorResizeHandles, ImageEditorCanvas } from "..";
|
|
2
2
|
import { Button } from "../../button";
|
|
3
3
|
import { CheckboxWithLabelAfter } from "../../checkbox";
|
|
4
4
|
import { NumericTextbox } from "../../numerictextbox";
|
|
@@ -6,30 +6,15 @@ import { Form, FormField, Fieldset } from "../../form";
|
|
|
6
6
|
import { Icon } from "../../icon";
|
|
7
7
|
import { RadioGroup, RadioItem, RadioButtonWithLabelAfter } from "../../radio";
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
<Button fillMode="flat" key="sidebar-button-1" icon="image-resize" selected aria-label="Resize"></Button>,
|
|
11
|
-
<Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
|
|
12
|
-
<Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
|
|
13
|
-
<div className="k-separator" key="sidebar-separator-1"></div>,
|
|
14
|
-
<Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
|
|
15
|
-
<Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
|
|
16
|
-
<div className="k-separator" key="sidebar-separator-2"></div>,
|
|
17
|
-
<Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur"></Button>,
|
|
18
|
-
<Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
|
|
19
|
-
<Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
|
|
20
|
-
<div className="k-separator" key="sidebar-separator-3"></div>,
|
|
21
|
-
<Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
|
|
22
|
-
<Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
|
|
23
|
-
];
|
|
24
|
-
|
|
25
|
-
export const ImageEditorResize = ({ scaleUnit = "percentage", ...props }: any) => (
|
|
9
|
+
export const ImageEditorResize = ({ scaleUnit = "percentage", modified = false, adaptive, imageSrc, ...props }: any) => (
|
|
26
10
|
<ImageEditor
|
|
27
|
-
|
|
11
|
+
adaptive={adaptive}
|
|
12
|
+
activeTool="Resize"
|
|
28
13
|
actionPane={
|
|
29
|
-
<ImageEditorPane title="Resize" actions={
|
|
14
|
+
<ImageEditorPane title="Resize" adaptive={adaptive} confirmDisabled={!modified} actions={
|
|
30
15
|
<>
|
|
31
|
-
<Button>Reset</Button>
|
|
32
|
-
<Button themeColor="primary">Apply</Button>
|
|
16
|
+
<Button disabled={!modified}>Reset</Button>
|
|
17
|
+
<Button themeColor="primary" disabled={!modified}>Apply</Button>
|
|
33
18
|
</>
|
|
34
19
|
}>
|
|
35
20
|
<Form tag="div">
|
|
@@ -50,12 +35,12 @@ export const ImageEditorResize = ({ scaleUnit = "percentage", ...props }: any) =
|
|
|
50
35
|
<FormField
|
|
51
36
|
label="Width"
|
|
52
37
|
editorId="resize-width"
|
|
53
|
-
editor={ <NumericTextbox id="resize-width" showClearButton={false} value={scaleUnit === "percentage" ? "100%" : "494"} prefix={<Icon icon="arrows-left-right" />} /> }
|
|
38
|
+
editor={ <NumericTextbox id="resize-width" showClearButton={false} showSpinButton={false} value={scaleUnit === "percentage" ? "100%" : "494"} prefix={<Icon icon="arrows-left-right" />} /> }
|
|
54
39
|
/>
|
|
55
40
|
<FormField
|
|
56
41
|
label="Height"
|
|
57
42
|
editorId="resize-height"
|
|
58
|
-
editor={ <NumericTextbox id="resize-height" showClearButton={false} value={scaleUnit === "percentage" ? "100%" : "307"} prefix={<Icon icon="arrows-top-bottom" />} /> }
|
|
43
|
+
editor={ <NumericTextbox id="resize-height" showClearButton={false} showSpinButton={false} value={scaleUnit === "percentage" ? "100%" : "307"} prefix={<Icon icon="arrows-top-bottom" />} /> }
|
|
59
44
|
/>
|
|
60
45
|
</Fieldset>
|
|
61
46
|
<FormField editor={ <CheckboxWithLabelAfter id="resize-lock" checked>Lock Aspect Ratio</CheckboxWithLabelAfter> } />
|
|
@@ -65,7 +50,7 @@ export const ImageEditorResize = ({ scaleUnit = "percentage", ...props }: any) =
|
|
|
65
50
|
|
|
66
51
|
children={
|
|
67
52
|
<>
|
|
68
|
-
<
|
|
53
|
+
<ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} />
|
|
69
54
|
<div className="k-imageeditor-resize">
|
|
70
55
|
<ImageEditorResizeHandles variant="mixed" />
|
|
71
56
|
</div>
|
|
@@ -1,34 +1,19 @@
|
|
|
1
|
-
import { ImageEditor, ImageEditorPane, ImageEditorResizeHandles, ImageEditorRotateHandle } from "..";
|
|
1
|
+
import { ImageEditor, ImageEditorPane, ImageEditorResizeHandles, ImageEditorRotateHandle, ImageEditorCanvas } from "..";
|
|
2
2
|
import { Button } from "../../button";
|
|
3
3
|
import { NumericTextbox } from "../../numerictextbox";
|
|
4
4
|
import { InputSuffixText } from "../../input";
|
|
5
5
|
import { Form, FormField, Fieldset } from "../../form";
|
|
6
6
|
import { Slider } from "../../slider";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
<Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
|
|
10
|
-
<Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
|
|
11
|
-
<Button fillMode="flat" key="sidebar-button-3" icon="rotate" selected aria-label="Rotate"></Button>,
|
|
12
|
-
<div className="k-separator" key="sidebar-separator-1"></div>,
|
|
13
|
-
<Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
|
|
14
|
-
<Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
|
|
15
|
-
<div className="k-separator" key="sidebar-separator-2"></div>,
|
|
16
|
-
<Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur"></Button>,
|
|
17
|
-
<Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
|
|
18
|
-
<Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
|
|
19
|
-
<div className="k-separator" key="sidebar-separator-3"></div>,
|
|
20
|
-
<Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
|
|
21
|
-
<Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" aria-label="Shadow"></Button>
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
export const ImageEditorRotate = ({ rotation = 0, ...props }: any) => (
|
|
8
|
+
export const ImageEditorRotate = ({ rotation = 0, adaptive, imageSrc, ...props }: any) => (
|
|
25
9
|
<ImageEditor
|
|
26
|
-
|
|
10
|
+
adaptive={adaptive}
|
|
11
|
+
activeTool="Rotate"
|
|
27
12
|
actionPane={
|
|
28
|
-
<ImageEditorPane title="Rotate" actions={
|
|
13
|
+
<ImageEditorPane title="Rotate" adaptive={adaptive} confirmDisabled={rotation === 0} actions={
|
|
29
14
|
<>
|
|
30
|
-
<Button>Reset</Button>
|
|
31
|
-
<Button themeColor="primary">Apply</Button>
|
|
15
|
+
<Button disabled={rotation === 0}>Reset</Button>
|
|
16
|
+
<Button themeColor="primary" disabled={rotation === 0}>Apply</Button>
|
|
32
17
|
</>
|
|
33
18
|
}>
|
|
34
19
|
<Form tag="div">
|
|
@@ -82,7 +67,7 @@ export const ImageEditorRotate = ({ rotation = 0, ...props }: any) => (
|
|
|
82
67
|
|
|
83
68
|
children={
|
|
84
69
|
<>
|
|
85
|
-
<
|
|
70
|
+
<ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} />
|
|
86
71
|
<div className="k-imageeditor-rotate">
|
|
87
72
|
<ImageEditorResizeHandles variant="scale" grid />
|
|
88
73
|
<ImageEditorRotateHandle />
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ImageEditor, ImageEditorPane } from "..";
|
|
1
|
+
import { ImageEditor, ImageEditorPane, ImageEditorCanvas } from "..";
|
|
2
2
|
import { Button } from "../../button";
|
|
3
3
|
import { NumericTextbox } from "../../numerictextbox";
|
|
4
4
|
import { ColorPicker } from "../../colorpicker";
|
|
@@ -6,46 +6,26 @@ import { Form, FormField, Fieldset } from "../../form";
|
|
|
6
6
|
import { Icon } from "../../icon";
|
|
7
7
|
import { InputPrefixText } from "../../input";
|
|
8
8
|
|
|
9
|
-
const shadowSidebarItems = [
|
|
10
|
-
<Button fillMode="flat" key="sidebar-button-1" icon="image-resize" aria-label="Resize"></Button>,
|
|
11
|
-
<Button fillMode="flat" key="sidebar-button-2" icon="crop" aria-label="Crop"></Button>,
|
|
12
|
-
<Button fillMode="flat" key="sidebar-button-3" icon="rotate" aria-label="Rotate"></Button>,
|
|
13
|
-
<div className="k-separator" key="sidebar-separator-1"></div>,
|
|
14
|
-
<Button fillMode="flat" key="sidebar-button-4" icon="free-text" aria-label="Text"></Button>,
|
|
15
|
-
<Button fillMode="flat" key="sidebar-button-5" icon="shapes" aria-label="Shapes"></Button>,
|
|
16
|
-
<div className="k-separator" key="sidebar-separator-2"></div>,
|
|
17
|
-
<Button fillMode="flat" key="sidebar-button-6" icon="drop-half-pixelated" aria-label="Blur"></Button>,
|
|
18
|
-
<Button fillMode="flat" key="sidebar-button-7" icon="sliders-horizontal" aria-label="Adjustments"></Button>,
|
|
19
|
-
<Button fillMode="flat" key="sidebar-button-8" icon="circles-three-intersecting" aria-label="Filters"></Button>,
|
|
20
|
-
<div className="k-separator" key="sidebar-separator-3"></div>,
|
|
21
|
-
<Button fillMode="flat" key="sidebar-button-9" icon="frame-corners" aria-label="Frame"></Button>,
|
|
22
|
-
<Button fillMode="flat" key="sidebar-button-10" icon="circle-half-tilted" selected aria-label="Shadow"></Button>
|
|
23
|
-
];
|
|
24
|
-
|
|
25
|
-
const hexToRgba = (hex: string, alphaPercent: number) => {
|
|
26
|
-
const value = hex.replace("#", "");
|
|
27
|
-
const r = parseInt(value.substring(0, 2), 16);
|
|
28
|
-
const g = parseInt(value.substring(2, 4), 16);
|
|
29
|
-
const b = parseInt(value.substring(4, 6), 16);
|
|
30
|
-
return `rgba(${r}, ${g}, ${b}, ${alphaPercent / 100})`;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
9
|
export const ImageEditorShadow = ({
|
|
34
10
|
positionX = 0,
|
|
35
|
-
positionY =
|
|
36
|
-
blur =
|
|
11
|
+
positionY = 0,
|
|
12
|
+
blur = 0,
|
|
37
13
|
spread = 0,
|
|
38
14
|
color = "#000000",
|
|
39
|
-
opacity =
|
|
15
|
+
opacity = 100,
|
|
16
|
+
isPristine = positionX === 0 && positionY === 0 && blur === 0 && spread === 0 && color === "#000000" && opacity === 100,
|
|
17
|
+
adaptive,
|
|
18
|
+
imageSrc,
|
|
40
19
|
...props
|
|
41
20
|
}: any) => (
|
|
42
21
|
<ImageEditor
|
|
43
|
-
|
|
22
|
+
adaptive={adaptive}
|
|
23
|
+
activeTool="Shadow"
|
|
44
24
|
actionPane={
|
|
45
|
-
<ImageEditorPane title="Shadow" actions={
|
|
25
|
+
<ImageEditorPane title="Shadow" adaptive={adaptive} confirmDisabled={isPristine} actions={
|
|
46
26
|
<>
|
|
47
|
-
<Button>Reset</Button>
|
|
48
|
-
<Button themeColor="primary">Apply</Button>
|
|
27
|
+
<Button disabled={isPristine}>Reset</Button>
|
|
28
|
+
<Button themeColor="primary" disabled={isPristine}>Apply</Button>
|
|
49
29
|
</>
|
|
50
30
|
}>
|
|
51
31
|
<Form tag="div">
|
|
@@ -53,8 +33,8 @@ export const ImageEditorShadow = ({
|
|
|
53
33
|
label="Position"
|
|
54
34
|
editor={
|
|
55
35
|
<Fieldset layout="grid" cols={2} gutters={{ cols: "16px" }}>
|
|
56
|
-
<NumericTextbox id="shadow-position-x" showSpinButton={false} value={String(positionX)} prefix={<InputPrefixText>X</InputPrefixText>} aria-label="Position X" />
|
|
57
|
-
<NumericTextbox id="shadow-position-y" showSpinButton={false} value={String(positionY)} prefix={<InputPrefixText>Y</InputPrefixText>} aria-label="Position Y" />
|
|
36
|
+
<NumericTextbox id="shadow-position-x" showClearButton={false} showSpinButton={false} value={String(positionX)} prefix={<InputPrefixText>X</InputPrefixText>} aria-label="Position X" />
|
|
37
|
+
<NumericTextbox id="shadow-position-y" showClearButton={false} showSpinButton={false} value={String(positionY)} prefix={<InputPrefixText>Y</InputPrefixText>} aria-label="Position Y" />
|
|
58
38
|
</Fieldset>
|
|
59
39
|
}
|
|
60
40
|
/>
|
|
@@ -62,12 +42,12 @@ export const ImageEditorShadow = ({
|
|
|
62
42
|
<FormField
|
|
63
43
|
label="Blur"
|
|
64
44
|
editorId="shadow-blur"
|
|
65
|
-
editor={ <NumericTextbox id="shadow-blur" showSpinButton={false} value={String(blur)} prefix={<Icon icon="blur" />} /> }
|
|
45
|
+
editor={ <NumericTextbox id="shadow-blur" showClearButton={false} showSpinButton={false} value={String(blur)} prefix={<Icon icon="blur" />} /> }
|
|
66
46
|
/>
|
|
67
47
|
<FormField
|
|
68
48
|
label="Spread"
|
|
69
49
|
editorId="shadow-spread"
|
|
70
|
-
editor={ <NumericTextbox id="shadow-spread" showSpinButton={false} value={String(spread)} prefix={<Icon icon="brightness-contrast" />} /> }
|
|
50
|
+
editor={ <NumericTextbox id="shadow-spread" showClearButton={false} showSpinButton={false} value={String(spread)} prefix={<Icon icon="brightness-contrast" />} /> }
|
|
71
51
|
/>
|
|
72
52
|
</Fieldset>
|
|
73
53
|
<Fieldset layout="grid" cols={2} gutters={{ cols: "16px" }}>
|
|
@@ -78,7 +58,7 @@ export const ImageEditorShadow = ({
|
|
|
78
58
|
<FormField
|
|
79
59
|
label="Opacity"
|
|
80
60
|
editorId="shadow-opacity"
|
|
81
|
-
editor={ <NumericTextbox id="shadow-opacity" showSpinButton={false} value={`${opacity}%`} prefix={<Icon icon="transparency" />} /> }
|
|
61
|
+
editor={ <NumericTextbox id="shadow-opacity" showClearButton={false} showSpinButton={false} value={`${opacity}%`} prefix={<Icon icon="transparency" />} /> }
|
|
82
62
|
/>
|
|
83
63
|
</Fieldset>
|
|
84
64
|
</Form>
|
|
@@ -86,11 +66,9 @@ export const ImageEditorShadow = ({
|
|
|
86
66
|
}
|
|
87
67
|
|
|
88
68
|
children={
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
boxShadow: `${positionX}px ${positionY}px ${blur}px ${spread}px ${hexToRgba(color, opacity)}`
|
|
93
|
-
}}></canvas>
|
|
69
|
+
<ImageEditorCanvas adaptive={adaptive} imageSrc={imageSrc} style={{
|
|
70
|
+
boxShadow: `${positionX}px ${positionY}px ${blur}px ${spread}px color-mix(in srgb, ${color} ${opacity}%, transparent)`
|
|
71
|
+
}} />
|
|
94
72
|
}
|
|
95
73
|
{...props} />
|
|
96
74
|
);
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ImageEditorResizeAdaptive,
|
|
3
|
+
ImageEditorCropAdaptive,
|
|
4
|
+
ImageEditorRotateAdaptive,
|
|
5
|
+
ImageEditorInsertTextAdaptive,
|
|
6
|
+
ImageEditorInsertShapeAdaptive,
|
|
7
|
+
ImageEditorInsertLineAdaptive,
|
|
8
|
+
ImageEditorBlurAdaptive,
|
|
9
|
+
ImageEditorPixelateAdaptive,
|
|
10
|
+
ImageEditorAdjustmentsAdaptive,
|
|
11
|
+
ImageEditorFiltersAdaptive,
|
|
12
|
+
ImageEditorFramesAdaptive,
|
|
13
|
+
ImageEditorShadowAdaptive
|
|
14
|
+
} from '..';
|
|
15
|
+
import { IMAGEEDITOR_TEST_IMAGE_SRC } from '../constants';
|
|
16
|
+
|
|
17
|
+
const styles = `
|
|
18
|
+
#test-area {
|
|
19
|
+
display: flex;
|
|
20
|
+
gap: 24px;
|
|
21
|
+
flex-wrap: wrap;
|
|
22
|
+
}
|
|
23
|
+
#test-area .k-imageeditor-adaptive {
|
|
24
|
+
width: 360px;
|
|
25
|
+
height: 800px;
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
|
|
29
|
+
const image = { imageSrc: IMAGEEDITOR_TEST_IMAGE_SRC };
|
|
30
|
+
|
|
31
|
+
export default () => (
|
|
32
|
+
<>
|
|
33
|
+
<style>{styles}</style>
|
|
34
|
+
<div id="test-area">
|
|
35
|
+
<div>
|
|
36
|
+
<h4>Mobile / Resize</h4>
|
|
37
|
+
<ImageEditorResizeAdaptive {...image} />
|
|
38
|
+
</div>
|
|
39
|
+
<div>
|
|
40
|
+
<h4>Mobile / Crop</h4>
|
|
41
|
+
<ImageEditorCropAdaptive {...image} />
|
|
42
|
+
</div>
|
|
43
|
+
<div>
|
|
44
|
+
<h4>Mobile / Rotate</h4>
|
|
45
|
+
<ImageEditorRotateAdaptive {...image} />
|
|
46
|
+
</div>
|
|
47
|
+
<div>
|
|
48
|
+
<h4>Mobile / Text</h4>
|
|
49
|
+
<ImageEditorInsertTextAdaptive {...image} />
|
|
50
|
+
</div>
|
|
51
|
+
<div>
|
|
52
|
+
<h4>Mobile / Shape</h4>
|
|
53
|
+
<ImageEditorInsertShapeAdaptive {...image} />
|
|
54
|
+
</div>
|
|
55
|
+
<div>
|
|
56
|
+
<h4>Mobile / Line</h4>
|
|
57
|
+
<ImageEditorInsertLineAdaptive {...image} />
|
|
58
|
+
</div>
|
|
59
|
+
<div>
|
|
60
|
+
<h4>Mobile / Blur</h4>
|
|
61
|
+
<ImageEditorBlurAdaptive {...image} />
|
|
62
|
+
</div>
|
|
63
|
+
<div>
|
|
64
|
+
<h4>Mobile / Pixelate</h4>
|
|
65
|
+
<ImageEditorPixelateAdaptive {...image} />
|
|
66
|
+
</div>
|
|
67
|
+
<div>
|
|
68
|
+
<h4>Mobile / Adjustments</h4>
|
|
69
|
+
<ImageEditorAdjustmentsAdaptive {...image} />
|
|
70
|
+
</div>
|
|
71
|
+
<div>
|
|
72
|
+
<h4>Mobile / Filters</h4>
|
|
73
|
+
<ImageEditorFiltersAdaptive {...image} />
|
|
74
|
+
</div>
|
|
75
|
+
<div>
|
|
76
|
+
<h4>Mobile / Frame</h4>
|
|
77
|
+
<ImageEditorFramesAdaptive {...image} />
|
|
78
|
+
</div>
|
|
79
|
+
<div>
|
|
80
|
+
<h4>Mobile / Shadow</h4>
|
|
81
|
+
<ImageEditorShadowAdaptive {...image} />
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</>
|
|
85
|
+
);
|