|
|
|
@ -17,15 +17,12 @@ import {
|
|
|
|
|
import { getNonDeletedElements } from "../element";
|
|
|
|
|
import { randomId } from "../random";
|
|
|
|
|
import { ToolButton } from "../components/ToolButton";
|
|
|
|
|
import {
|
|
|
|
|
ExcalidrawElement,
|
|
|
|
|
ExcalidrawFrameElement,
|
|
|
|
|
ExcalidrawTextElement,
|
|
|
|
|
} from "../element/types";
|
|
|
|
|
import { ExcalidrawElement, ExcalidrawTextElement } from "../element/types";
|
|
|
|
|
import { AppClassProperties, AppState } from "../types";
|
|
|
|
|
import { isBoundToContainer } from "../element/typeChecks";
|
|
|
|
|
import {
|
|
|
|
|
getElementsInResizingFrame,
|
|
|
|
|
getFrameElements,
|
|
|
|
|
groupByFrames,
|
|
|
|
|
removeElementsFromFrame,
|
|
|
|
|
replaceAllElementsInFrame,
|
|
|
|
@ -190,13 +187,6 @@ export const actionUngroup = register({
|
|
|
|
|
|
|
|
|
|
let nextElements = [...elements];
|
|
|
|
|
|
|
|
|
|
const selectedElements = app.scene.getSelectedElements(appState);
|
|
|
|
|
const frames = selectedElements
|
|
|
|
|
.filter((element) => element.frameId)
|
|
|
|
|
.map((element) =>
|
|
|
|
|
app.scene.getElement(element.frameId!),
|
|
|
|
|
) as ExcalidrawFrameElement[];
|
|
|
|
|
|
|
|
|
|
const boundTextElementIds: ExcalidrawTextElement["id"][] = [];
|
|
|
|
|
nextElements = nextElements.map((element) => {
|
|
|
|
|
if (isBoundToContainer(element)) {
|
|
|
|
@ -221,7 +211,19 @@ export const actionUngroup = register({
|
|
|
|
|
null,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
frames.forEach((frame) => {
|
|
|
|
|
const selectedElements = app.scene.getSelectedElements(appState);
|
|
|
|
|
|
|
|
|
|
const selectedElementFrameIds = new Set(
|
|
|
|
|
selectedElements
|
|
|
|
|
.filter((element) => element.frameId)
|
|
|
|
|
.map((element) => element.frameId!),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const targetFrames = getFrameElements(elements).filter((frame) =>
|
|
|
|
|
selectedElementFrameIds.has(frame.id),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
targetFrames.forEach((frame) => {
|
|
|
|
|
if (frame) {
|
|
|
|
|
nextElements = replaceAllElementsInFrame(
|
|
|
|
|
nextElements,
|
|
|
|
|