Adding ability to copy to clipboard as SVG (#1250)

This commit is contained in:
Roxana Chiorean 2020-04-05 16:13:17 -07:00 committed by GitHub
parent 2de4fe29ad
commit d5366db341
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 55 additions and 7 deletions

View file

@ -88,6 +88,7 @@ import {
copyToAppClipboard,
getClipboardContent,
probablySupportsClipboardBlob,
probablySupportsClipboardWriteText,
} from "../clipboard";
import { normalizeScroll } from "../scene";
import { getCenter, getDistance } from "../gesture";
@ -565,6 +566,22 @@ export class App extends React.Component<any, AppState> {
);
};
private copyToClipboardAsSvg = () => {
const selectedElements = getSelectedElements(
globalSceneState.getAllElements(),
this.state,
);
exportCanvas(
"clipboard-svg",
selectedElements.length
? selectedElements
: globalSceneState.getAllElements(),
this.state,
this.canvas!,
this.state,
);
};
private onTapStart = (event: TouchEvent) => {
if (!didTapTwice) {
didTapTwice = true;
@ -2661,6 +2678,11 @@ export class App extends React.Component<any, AppState> {
label: t("labels.copyAsPng"),
action: this.copyToClipboardAsPng,
},
probablySupportsClipboardWriteText &&
hasNonDeletedElements(globalSceneState.getAllElements()) && {
label: t("labels.copyAsSvg"),
action: this.copyToClipboardAsSvg,
},
...this.actionManager.getContextMenuItems((action) =>
this.canvasOnlyActions.includes(action.name),
),
@ -2689,6 +2711,10 @@ export class App extends React.Component<any, AppState> {
label: t("labels.copyAsPng"),
action: this.copyToClipboardAsPng,
},
probablySupportsClipboardWriteText && {
label: t("labels.copyAsSvg"),
action: this.copyToClipboardAsSvg,
},
...this.actionManager.getContextMenuItems(
(action) => !this.canvasOnlyActions.includes(action.name),
),