@excalidraw/excalidraw 0.17.1-7441-4e2c539 → 0.17.1-a38e82f
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/CHANGELOG.md +52 -2
- package/dist/browser/dev/excalidraw-assets-dev/chunk-5VWQDKDR.js +20279 -0
- package/dist/browser/dev/excalidraw-assets-dev/chunk-5VWQDKDR.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-2W5GQUR4.js → chunk-IM4WTX2M.js} +12 -6
- package/dist/browser/dev/excalidraw-assets-dev/chunk-IM4WTX2M.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{en-OC6JWP3X.js → en-IOBA4CS2.js} +4 -2
- package/dist/browser/dev/excalidraw-assets-dev/image-LK4UNFRZ.css +6 -0
- package/dist/browser/dev/excalidraw-assets-dev/image-LK4UNFRZ.css.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{image-HYNUJ3XL.js → image-VKDAL6BQ.js} +2 -4
- package/dist/browser/dev/excalidraw-assets-dev/roundRect-T5BX56ZF.js +161 -0
- package/dist/browser/dev/excalidraw-assets-dev/roundRect-T5BX56ZF.js.map +7 -0
- package/dist/browser/dev/index.css +189 -129
- package/dist/browser/dev/index.css.map +3 -3
- package/dist/browser/dev/index.js +34707 -26
- package/dist/browser/dev/index.js.map +4 -4
- package/dist/browser/prod/excalidraw-assets/chunk-LIG3S5TN.js +11 -0
- package/dist/browser/prod/excalidraw-assets/chunk-N2C5DK3B.js +55 -0
- package/dist/browser/prod/excalidraw-assets/en-WFZVQ7I6.js +1 -0
- package/dist/browser/prod/excalidraw-assets/image-4AT7LYMR.js +1 -0
- package/dist/browser/prod/excalidraw-assets/image-X66R2EM5.css +1 -0
- package/dist/browser/prod/excalidraw-assets/roundRect-2ACQK4DA.js +1 -0
- package/dist/browser/prod/index.css +1 -1
- package/dist/browser/prod/index.js +203 -1
- package/dist/{prod/en-RLIAOBCI.json → dev/en-TDNWCAOT.json} +9 -5
- package/dist/dev/index.css +189 -129
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +38445 -39402
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.d.ts +12 -12
- package/dist/excalidraw/actions/actionAlign.d.ts +6 -6
- package/dist/excalidraw/actions/actionAlign.js +2 -1
- package/dist/excalidraw/actions/actionBoundText.d.ts +8 -8
- package/dist/excalidraw/actions/actionBoundText.js +8 -8
- package/dist/excalidraw/actions/actionCanvas.d.ts +46 -46
- package/dist/excalidraw/actions/actionClipboard.d.ts +27 -27
- package/dist/excalidraw/actions/actionClipboard.js +9 -2
- package/dist/excalidraw/actions/actionDeleteSelected.d.ts +12 -12
- package/dist/excalidraw/actions/actionDeleteSelected.js +3 -2
- package/dist/excalidraw/actions/actionDistribute.d.ts +2 -2
- package/dist/excalidraw/actions/actionDistribute.js +1 -1
- package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +1 -1
- package/dist/excalidraw/actions/actionDuplicateSelection.js +4 -3
- package/dist/excalidraw/actions/actionElementLock.d.ts +8 -8
- package/dist/excalidraw/actions/actionExport.d.ts +35 -35
- package/dist/excalidraw/actions/actionExport.js +4 -4
- package/dist/excalidraw/actions/actionFinalize.d.ts +7 -7
- package/dist/excalidraw/actions/actionFinalize.js +7 -6
- package/dist/excalidraw/actions/actionFlip.d.ts +2 -2
- package/dist/excalidraw/actions/actionFlip.js +11 -11
- package/dist/excalidraw/actions/actionFrame.d.ts +13 -13
- package/dist/excalidraw/actions/actionFrame.js +1 -1
- package/dist/excalidraw/actions/actionGroup.d.ts +8 -8
- package/dist/excalidraw/actions/actionGroup.js +3 -2
- package/dist/excalidraw/actions/actionLinearEditor.d.ts +4 -4
- package/dist/excalidraw/actions/actionLinearEditor.js +1 -1
- package/dist/excalidraw/{element/Hyperlink.d.ts → actions/actionLink.d.ts} +28 -50
- package/dist/excalidraw/actions/actionLink.js +40 -0
- package/dist/excalidraw/actions/actionMenu.d.ts +11 -11
- package/dist/excalidraw/actions/actionNavigate.d.ts +8 -8
- package/dist/excalidraw/actions/actionNavigate.js +1 -1
- package/dist/excalidraw/actions/actionProperties.d.ts +64 -64
- package/dist/excalidraw/actions/actionProperties.js +32 -27
- package/dist/excalidraw/actions/actionSelectAll.d.ts +4 -4
- package/dist/excalidraw/actions/actionSelectAll.js +1 -1
- package/dist/excalidraw/actions/actionStyles.d.ts +6 -6
- package/dist/excalidraw/actions/actionStyles.js +4 -4
- package/dist/excalidraw/actions/actionToggleGridMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleStats.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleViewMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleZenMode.d.ts +4 -4
- package/dist/excalidraw/actions/index.d.ts +1 -1
- package/dist/excalidraw/actions/index.js +1 -1
- package/dist/excalidraw/actions/manager.js +2 -1
- package/dist/excalidraw/align.d.ts +2 -2
- package/dist/excalidraw/align.js +2 -2
- package/dist/excalidraw/animated-trail.d.ts +33 -0
- package/dist/excalidraw/animated-trail.js +96 -0
- package/dist/excalidraw/animation-frame-handler.d.ts +16 -0
- package/dist/excalidraw/animation-frame-handler.js +55 -0
- package/dist/excalidraw/appState.d.ts +1 -1
- package/dist/excalidraw/appState.js +1 -3
- package/dist/excalidraw/clipboard.js +5 -5
- package/dist/excalidraw/components/Actions.d.ts +3 -3
- package/dist/excalidraw/components/Actions.js +18 -7
- package/dist/excalidraw/components/App.d.ts +32 -17
- package/dist/excalidraw/components/App.js +474 -339
- package/dist/excalidraw/components/Button.d.ts +1 -1
- package/dist/excalidraw/components/FilledButton.d.ts +2 -2
- package/dist/excalidraw/components/FilledButton.js +27 -3
- package/dist/excalidraw/components/FollowMode/FollowMode.js +1 -1
- package/dist/excalidraw/components/ImageExportDialog.d.ts +2 -1
- package/dist/excalidraw/components/ImageExportDialog.js +16 -12
- package/dist/excalidraw/components/JSONExportDialog.js +1 -1
- package/dist/excalidraw/components/{LaserTool/LaserPointerButton.d.ts → LaserPointerButton.d.ts} +1 -1
- package/dist/excalidraw/components/{LaserTool/LaserPointerButton.js → LaserPointerButton.js} +2 -2
- package/dist/excalidraw/components/LayerUI.js +3 -3
- package/dist/excalidraw/components/MobileMenu.js +1 -1
- package/dist/excalidraw/components/ProjectName.d.ts +0 -1
- package/dist/excalidraw/components/ProjectName.js +1 -1
- package/dist/excalidraw/components/SVGLayer.d.ts +8 -0
- package/dist/excalidraw/components/SVGLayer.js +20 -0
- package/dist/excalidraw/components/ShareableLinkDialog.js +10 -10
- package/dist/excalidraw/components/Stack.d.ts +2 -2
- package/dist/excalidraw/components/TTDDialog/common.js +10 -1
- package/dist/excalidraw/components/TextField.d.ts +5 -2
- package/dist/excalidraw/components/TextField.js +6 -3
- package/dist/excalidraw/components/Toast.d.ts +3 -2
- package/dist/excalidraw/components/Toast.js +2 -2
- package/dist/excalidraw/components/ToolButton.js +2 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -2
- package/dist/excalidraw/components/canvases/InteractiveCanvas.js +6 -5
- package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +4 -3
- package/dist/excalidraw/components/canvases/StaticCanvas.js +7 -5
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuContent.js +22 -2
- package/dist/excalidraw/components/dropdownMenu/common.d.ts +1 -1
- package/dist/excalidraw/components/hyperlink/Hyperlink.d.ts +19 -0
- package/dist/excalidraw/{element → components/hyperlink}/Hyperlink.js +40 -115
- package/dist/excalidraw/components/hyperlink/helpers.d.ts +7 -0
- package/dist/excalidraw/components/hyperlink/helpers.js +49 -0
- package/dist/excalidraw/components/icons.d.ts +2 -1
- package/dist/excalidraw/components/icons.js +2 -1
- package/dist/excalidraw/components/live-collaboration/LiveCollaborationTrigger.js +3 -2
- package/dist/excalidraw/components/main-menu/DefaultItems.js +5 -2
- package/dist/excalidraw/constants.d.ts +8 -0
- package/dist/excalidraw/constants.js +10 -0
- package/dist/excalidraw/data/blob.js +13 -14
- package/dist/excalidraw/data/filesystem.d.ts +1 -1
- package/dist/excalidraw/data/index.d.ts +2 -1
- package/dist/excalidraw/data/index.js +20 -16
- package/dist/excalidraw/data/json.d.ts +1 -1
- package/dist/excalidraw/data/json.js +5 -3
- package/dist/excalidraw/data/resave.d.ts +1 -1
- package/dist/excalidraw/data/resave.js +2 -2
- package/dist/excalidraw/data/restore.js +8 -13
- package/dist/excalidraw/data/transform.js +13 -9
- package/dist/excalidraw/distribute.d.ts +2 -2
- package/dist/excalidraw/distribute.js +2 -2
- package/dist/excalidraw/element/ElementCanvasButtons.d.ts +3 -2
- package/dist/excalidraw/element/ElementCanvasButtons.js +4 -4
- package/dist/excalidraw/element/binding.d.ts +9 -9
- package/dist/excalidraw/element/binding.js +61 -59
- package/dist/excalidraw/element/bounds.d.ts +5 -5
- package/dist/excalidraw/element/bounds.js +29 -32
- package/dist/excalidraw/element/collision.d.ts +11 -11
- package/dist/excalidraw/element/collision.js +49 -46
- package/dist/excalidraw/element/containerCache.d.ts +11 -0
- package/dist/excalidraw/element/containerCache.js +14 -0
- package/dist/excalidraw/element/dragElements.js +10 -19
- package/dist/excalidraw/element/embeddable.d.ts +11 -12
- package/dist/excalidraw/element/embeddable.js +17 -27
- package/dist/excalidraw/element/image.js +1 -2
- package/dist/excalidraw/element/index.d.ts +0 -1
- package/dist/excalidraw/element/index.js +0 -1
- package/dist/excalidraw/element/linearElementEditor.d.ts +35 -35
- package/dist/excalidraw/element/linearElementEditor.js +79 -80
- package/dist/excalidraw/element/newElement.d.ts +4 -6
- package/dist/excalidraw/element/newElement.js +11 -16
- package/dist/excalidraw/element/resizeElements.d.ts +6 -6
- package/dist/excalidraw/element/resizeElements.js +40 -46
- package/dist/excalidraw/element/resizeTest.d.ts +3 -3
- package/dist/excalidraw/element/resizeTest.js +4 -4
- package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
- package/dist/excalidraw/element/sizeHelpers.js +2 -2
- package/dist/excalidraw/element/textElement.d.ts +18 -20
- package/dist/excalidraw/element/textElement.js +80 -111
- package/dist/excalidraw/element/textWysiwyg.d.ts +1 -6
- package/dist/excalidraw/element/textWysiwyg.js +15 -37
- package/dist/excalidraw/element/transformHandles.d.ts +4 -4
- package/dist/excalidraw/element/transformHandles.js +6 -6
- package/dist/excalidraw/element/typeChecks.js +4 -1
- package/dist/excalidraw/element/types.d.ts +24 -11
- package/dist/excalidraw/emitter.d.ts +5 -9
- package/dist/excalidraw/emitter.js +12 -12
- package/dist/excalidraw/frame.d.ts +26 -20
- package/dist/excalidraw/frame.js +157 -84
- package/dist/excalidraw/groups.d.ts +3 -3
- package/dist/excalidraw/groups.js +11 -3
- package/dist/excalidraw/history.d.ts +1 -1
- package/dist/excalidraw/index.d.ts +7 -3
- package/dist/excalidraw/index.js +14 -5
- package/dist/excalidraw/laser-trails.d.ts +19 -0
- package/dist/excalidraw/laser-trails.js +95 -0
- package/dist/excalidraw/locales/en.json +9 -5
- package/dist/excalidraw/reactUtils.d.ts +14 -0
- package/dist/excalidraw/reactUtils.js +45 -0
- package/dist/excalidraw/renderer/helpers.d.ts +13 -0
- package/dist/excalidraw/renderer/helpers.js +39 -0
- package/dist/excalidraw/renderer/interactiveScene.d.ts +20 -0
- package/dist/excalidraw/renderer/{renderScene.js → interactiveScene.js} +199 -474
- package/dist/excalidraw/renderer/renderElement.d.ts +6 -6
- package/dist/excalidraw/renderer/renderElement.js +54 -366
- package/dist/excalidraw/renderer/staticScene.d.ts +11 -0
- package/dist/excalidraw/renderer/staticScene.js +205 -0
- package/dist/excalidraw/renderer/staticSvgScene.d.ts +5 -0
- package/dist/excalidraw/renderer/staticSvgScene.js +385 -0
- package/dist/excalidraw/scene/Fonts.js +2 -1
- package/dist/excalidraw/scene/Renderer.d.ts +1 -1
- package/dist/excalidraw/scene/Renderer.js +32 -20
- package/dist/excalidraw/scene/Scene.d.ts +10 -9
- package/dist/excalidraw/scene/Scene.js +45 -21
- package/dist/excalidraw/scene/Shape.d.ts +3 -1
- package/dist/excalidraw/scene/Shape.js +7 -5
- package/dist/excalidraw/scene/ShapeCache.d.ts +2 -1
- package/dist/excalidraw/scene/ShapeCache.js +1 -0
- package/dist/excalidraw/scene/comparisons.js +2 -1
- package/dist/excalidraw/scene/export.d.ts +3 -0
- package/dist/excalidraw/scene/export.js +20 -40
- package/dist/excalidraw/scene/index.d.ts +0 -1
- package/dist/excalidraw/scene/index.js +0 -1
- package/dist/excalidraw/scene/scrollbars.d.ts +1 -1
- package/dist/excalidraw/scene/scrollbars.js +1 -1
- package/dist/excalidraw/scene/selection.d.ts +5 -5
- package/dist/excalidraw/scene/selection.js +16 -14
- package/dist/excalidraw/scene/types.d.ts +11 -5
- package/dist/excalidraw/snapping.d.ts +7 -7
- package/dist/excalidraw/snapping.js +21 -20
- package/dist/excalidraw/types.d.ts +11 -12
- package/dist/excalidraw/utility-types.d.ts +5 -0
- package/dist/excalidraw/utils.d.ts +25 -16
- package/dist/excalidraw/utils.js +52 -45
- package/dist/{dev/en-RLIAOBCI.json → prod/en-TDNWCAOT.json} +9 -5
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +45 -45
- package/dist/utils/export.d.ts +0 -6
- package/dist/utils/export.js +0 -6
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/withinBounds.js +2 -1
- package/package.json +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/chunk-2W5GQUR4.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-SUHLFFEF.js +0 -53449
- package/dist/browser/dev/excalidraw-assets-dev/chunk-SUHLFFEF.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/image-NOPDRTTM.css +0 -5797
- package/dist/browser/dev/excalidraw-assets-dev/image-NOPDRTTM.css.map +0 -7
- package/dist/browser/prod/excalidraw-assets/chunk-HE2P7BQ6.js +0 -257
- package/dist/browser/prod/excalidraw-assets/chunk-OWLL6VOG.js +0 -11
- package/dist/browser/prod/excalidraw-assets/en-ERQOR3OC.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-DZ6B4AID.js +0 -1
- package/dist/browser/prod/excalidraw-assets/image-J2QCCYAR.css +0 -1
- package/dist/excalidraw/components/LaserTool/LaserPathManager.d.ts +0 -28
- package/dist/excalidraw/components/LaserTool/LaserPathManager.js +0 -225
- package/dist/excalidraw/components/LaserTool/LaserTool.d.ts +0 -8
- package/dist/excalidraw/components/LaserTool/LaserTool.js +0 -15
- package/dist/excalidraw/renderer/renderScene.d.ts +0 -25
- package/dist/excalidraw/vite.config.d.mts +0 -2
- package/dist/excalidraw/vite.config.mjs +0 -13
- /package/dist/browser/dev/excalidraw-assets-dev/{en-OC6JWP3X.js.map → en-IOBA4CS2.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-HYNUJ3XL.js.map → image-VKDAL6BQ.js.map} +0 -0
|
@@ -11,7 +11,7 @@ import { ArrowheadArrowIcon, ArrowheadBarIcon, ArrowheadCircleIcon, ArrowheadTri
|
|
|
11
11
|
import { DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, FONT_FAMILY, ROUNDNESS, STROKE_WIDTH, VERTICAL_ALIGN, } from "../constants";
|
|
12
12
|
import { getNonDeletedElements, isTextElement, redrawTextBoundingBox, } from "../element";
|
|
13
13
|
import { mutateElement, newElementWith } from "../element/mutateElement";
|
|
14
|
-
import { getBoundTextElement,
|
|
14
|
+
import { getBoundTextElement, getDefaultLineHeight, } from "../element/textElement";
|
|
15
15
|
import { isBoundToContainer, isLinearElement, isUsingAdaptiveRadius, } from "../element/typeChecks";
|
|
16
16
|
import { getLanguage, t } from "../i18n";
|
|
17
17
|
import { KEYS } from "../keys";
|
|
@@ -73,7 +73,7 @@ const offsetElementAfterFontResize = (prevElement, nextElement) => {
|
|
|
73
73
|
y: prevElement.y + (prevElement.height - nextElement.height) / 2,
|
|
74
74
|
}, false);
|
|
75
75
|
};
|
|
76
|
-
const changeFontSize = (elements, appState, getNewFontSize, fallbackValue) => {
|
|
76
|
+
const changeFontSize = (elements, appState, app, getNewFontSize, fallbackValue) => {
|
|
77
77
|
const newFontSizes = new Set();
|
|
78
78
|
return {
|
|
79
79
|
elements: changeProperty(elements, appState, (oldElement) => {
|
|
@@ -83,7 +83,7 @@ const changeFontSize = (elements, appState, getNewFontSize, fallbackValue) => {
|
|
|
83
83
|
let newElement = newElementWith(oldElement, {
|
|
84
84
|
fontSize: newFontSize,
|
|
85
85
|
});
|
|
86
|
-
redrawTextBoundingBox(newElement, getContainerElement(oldElement));
|
|
86
|
+
redrawTextBoundingBox(newElement, app.scene.getContainerElement(oldElement), app.scene.getNonDeletedElementsMap());
|
|
87
87
|
newElement = offsetElementAfterFontResize(oldElement, newElement);
|
|
88
88
|
return newElement;
|
|
89
89
|
}
|
|
@@ -301,10 +301,10 @@ export const actionChangeOpacity = register({
|
|
|
301
301
|
export const actionChangeFontSize = register({
|
|
302
302
|
name: "changeFontSize",
|
|
303
303
|
trackEvent: false,
|
|
304
|
-
perform: (elements, appState, value) => {
|
|
305
|
-
return changeFontSize(elements, appState, () => value, value);
|
|
304
|
+
perform: (elements, appState, value, app) => {
|
|
305
|
+
return changeFontSize(elements, appState, app, () => value, value);
|
|
306
306
|
},
|
|
307
|
-
PanelComponent: ({ elements, appState, updateData }) => (_jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.fontSize") }), _jsx(ButtonIconSelect, { group: "font-size", options: [
|
|
307
|
+
PanelComponent: ({ elements, appState, updateData, app }) => (_jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.fontSize") }), _jsx(ButtonIconSelect, { group: "font-size", options: [
|
|
308
308
|
{
|
|
309
309
|
value: 16,
|
|
310
310
|
text: t("labels.small"),
|
|
@@ -333,20 +333,21 @@ export const actionChangeFontSize = register({
|
|
|
333
333
|
if (isTextElement(element)) {
|
|
334
334
|
return element.fontSize;
|
|
335
335
|
}
|
|
336
|
-
const boundTextElement = getBoundTextElement(element);
|
|
336
|
+
const boundTextElement = getBoundTextElement(element, app.scene.getNonDeletedElementsMap());
|
|
337
337
|
if (boundTextElement) {
|
|
338
338
|
return boundTextElement.fontSize;
|
|
339
339
|
}
|
|
340
340
|
return null;
|
|
341
|
-
}, (element) => isTextElement(element) ||
|
|
341
|
+
}, (element) => isTextElement(element) ||
|
|
342
|
+
getBoundTextElement(element, app.scene.getNonDeletedElementsMap()) !== null, (hasSelection) => hasSelection
|
|
342
343
|
? null
|
|
343
344
|
: appState.currentItemFontSize || DEFAULT_FONT_SIZE), onChange: (value) => updateData(value) })] })),
|
|
344
345
|
});
|
|
345
346
|
export const actionDecreaseFontSize = register({
|
|
346
347
|
name: "decreaseFontSize",
|
|
347
348
|
trackEvent: false,
|
|
348
|
-
perform: (elements, appState, value) => {
|
|
349
|
-
return changeFontSize(elements, appState, (element) => Math.round(
|
|
349
|
+
perform: (elements, appState, value, app) => {
|
|
350
|
+
return changeFontSize(elements, appState, app, (element) => Math.round(
|
|
350
351
|
// get previous value before relative increase (doesn't work fully
|
|
351
352
|
// due to rounding and float precision issues)
|
|
352
353
|
(1 / (1 + FONT_SIZE_RELATIVE_INCREASE_STEP)) * element.fontSize));
|
|
@@ -361,8 +362,8 @@ export const actionDecreaseFontSize = register({
|
|
|
361
362
|
export const actionIncreaseFontSize = register({
|
|
362
363
|
name: "increaseFontSize",
|
|
363
364
|
trackEvent: false,
|
|
364
|
-
perform: (elements, appState, value) => {
|
|
365
|
-
return changeFontSize(elements, appState, (element) => Math.round(element.fontSize * (1 + FONT_SIZE_RELATIVE_INCREASE_STEP)));
|
|
365
|
+
perform: (elements, appState, value, app) => {
|
|
366
|
+
return changeFontSize(elements, appState, app, (element) => Math.round(element.fontSize * (1 + FONT_SIZE_RELATIVE_INCREASE_STEP)));
|
|
366
367
|
},
|
|
367
368
|
keyTest: (event) => {
|
|
368
369
|
return (event[KEYS.CTRL_OR_CMD] &&
|
|
@@ -374,7 +375,7 @@ export const actionIncreaseFontSize = register({
|
|
|
374
375
|
export const actionChangeFontFamily = register({
|
|
375
376
|
name: "changeFontFamily",
|
|
376
377
|
trackEvent: false,
|
|
377
|
-
perform: (elements, appState, value) => {
|
|
378
|
+
perform: (elements, appState, value, app) => {
|
|
378
379
|
return {
|
|
379
380
|
elements: changeProperty(elements, appState, (oldElement) => {
|
|
380
381
|
if (isTextElement(oldElement)) {
|
|
@@ -382,7 +383,7 @@ export const actionChangeFontFamily = register({
|
|
|
382
383
|
fontFamily: value,
|
|
383
384
|
lineHeight: getDefaultLineHeight(value),
|
|
384
385
|
});
|
|
385
|
-
redrawTextBoundingBox(newElement, getContainerElement(oldElement));
|
|
386
|
+
redrawTextBoundingBox(newElement, app.scene.getContainerElement(oldElement), app.scene.getNonDeletedElementsMap());
|
|
386
387
|
return newElement;
|
|
387
388
|
}
|
|
388
389
|
return oldElement;
|
|
@@ -394,7 +395,7 @@ export const actionChangeFontFamily = register({
|
|
|
394
395
|
commitToHistory: true,
|
|
395
396
|
};
|
|
396
397
|
},
|
|
397
|
-
PanelComponent: ({ elements, appState, updateData }) => {
|
|
398
|
+
PanelComponent: ({ elements, appState, updateData, app }) => {
|
|
398
399
|
const options = [
|
|
399
400
|
{
|
|
400
401
|
value: FONT_FAMILY.Virgil,
|
|
@@ -419,12 +420,13 @@ export const actionChangeFontFamily = register({
|
|
|
419
420
|
if (isTextElement(element)) {
|
|
420
421
|
return element.fontFamily;
|
|
421
422
|
}
|
|
422
|
-
const boundTextElement = getBoundTextElement(element);
|
|
423
|
+
const boundTextElement = getBoundTextElement(element, app.scene.getNonDeletedElementsMap());
|
|
423
424
|
if (boundTextElement) {
|
|
424
425
|
return boundTextElement.fontFamily;
|
|
425
426
|
}
|
|
426
427
|
return null;
|
|
427
|
-
}, (element) => isTextElement(element) ||
|
|
428
|
+
}, (element) => isTextElement(element) ||
|
|
429
|
+
getBoundTextElement(element, app.scene.getNonDeletedElementsMap()) !== null, (hasSelection) => hasSelection
|
|
428
430
|
? null
|
|
429
431
|
: appState.currentItemFontFamily || DEFAULT_FONT_FAMILY), onChange: (value) => updateData(value) })] }));
|
|
430
432
|
},
|
|
@@ -432,12 +434,12 @@ export const actionChangeFontFamily = register({
|
|
|
432
434
|
export const actionChangeTextAlign = register({
|
|
433
435
|
name: "changeTextAlign",
|
|
434
436
|
trackEvent: false,
|
|
435
|
-
perform: (elements, appState, value) => {
|
|
437
|
+
perform: (elements, appState, value, app) => {
|
|
436
438
|
return {
|
|
437
439
|
elements: changeProperty(elements, appState, (oldElement) => {
|
|
438
440
|
if (isTextElement(oldElement)) {
|
|
439
441
|
const newElement = newElementWith(oldElement, { textAlign: value });
|
|
440
|
-
redrawTextBoundingBox(newElement, getContainerElement(oldElement));
|
|
442
|
+
redrawTextBoundingBox(newElement, app.scene.getContainerElement(oldElement), app.scene.getNonDeletedElementsMap());
|
|
441
443
|
return newElement;
|
|
442
444
|
}
|
|
443
445
|
return oldElement;
|
|
@@ -449,7 +451,8 @@ export const actionChangeTextAlign = register({
|
|
|
449
451
|
commitToHistory: true,
|
|
450
452
|
};
|
|
451
453
|
},
|
|
452
|
-
PanelComponent: ({ elements, appState, updateData }) => {
|
|
454
|
+
PanelComponent: ({ elements, appState, updateData, app }) => {
|
|
455
|
+
const elementsMap = app.scene.getNonDeletedElementsMap();
|
|
453
456
|
return (_jsxs("fieldset", { children: [_jsx("legend", { children: t("labels.textAlign") }), _jsx(ButtonIconSelect, { group: "text-align", options: [
|
|
454
457
|
{
|
|
455
458
|
value: "left",
|
|
@@ -473,23 +476,24 @@ export const actionChangeTextAlign = register({
|
|
|
473
476
|
if (isTextElement(element)) {
|
|
474
477
|
return element.textAlign;
|
|
475
478
|
}
|
|
476
|
-
const boundTextElement = getBoundTextElement(element);
|
|
479
|
+
const boundTextElement = getBoundTextElement(element, elementsMap);
|
|
477
480
|
if (boundTextElement) {
|
|
478
481
|
return boundTextElement.textAlign;
|
|
479
482
|
}
|
|
480
483
|
return null;
|
|
481
|
-
}, (element) => isTextElement(element) ||
|
|
484
|
+
}, (element) => isTextElement(element) ||
|
|
485
|
+
getBoundTextElement(element, elementsMap) !== null, (hasSelection) => hasSelection ? null : appState.currentItemTextAlign), onChange: (value) => updateData(value) })] }));
|
|
482
486
|
},
|
|
483
487
|
});
|
|
484
488
|
export const actionChangeVerticalAlign = register({
|
|
485
489
|
name: "changeVerticalAlign",
|
|
486
490
|
trackEvent: { category: "element" },
|
|
487
|
-
perform: (elements, appState, value) => {
|
|
491
|
+
perform: (elements, appState, value, app) => {
|
|
488
492
|
return {
|
|
489
493
|
elements: changeProperty(elements, appState, (oldElement) => {
|
|
490
494
|
if (isTextElement(oldElement)) {
|
|
491
495
|
const newElement = newElementWith(oldElement, { verticalAlign: value });
|
|
492
|
-
redrawTextBoundingBox(newElement, getContainerElement(oldElement));
|
|
496
|
+
redrawTextBoundingBox(newElement, app.scene.getContainerElement(oldElement), app.scene.getNonDeletedElementsMap());
|
|
493
497
|
return newElement;
|
|
494
498
|
}
|
|
495
499
|
return oldElement;
|
|
@@ -500,7 +504,7 @@ export const actionChangeVerticalAlign = register({
|
|
|
500
504
|
commitToHistory: true,
|
|
501
505
|
};
|
|
502
506
|
},
|
|
503
|
-
PanelComponent: ({ elements, appState, updateData }) => {
|
|
507
|
+
PanelComponent: ({ elements, appState, updateData, app }) => {
|
|
504
508
|
return (_jsx("fieldset", { children: _jsx(ButtonIconSelect, { group: "text-align", options: [
|
|
505
509
|
{
|
|
506
510
|
value: VERTICAL_ALIGN.TOP,
|
|
@@ -524,12 +528,13 @@ export const actionChangeVerticalAlign = register({
|
|
|
524
528
|
if (isTextElement(element) && element.containerId) {
|
|
525
529
|
return element.verticalAlign;
|
|
526
530
|
}
|
|
527
|
-
const boundTextElement = getBoundTextElement(element);
|
|
531
|
+
const boundTextElement = getBoundTextElement(element, app.scene.getNonDeletedElementsMap());
|
|
528
532
|
if (boundTextElement) {
|
|
529
533
|
return boundTextElement.verticalAlign;
|
|
530
534
|
}
|
|
531
535
|
return null;
|
|
532
|
-
}, (element) => isTextElement(element) ||
|
|
536
|
+
}, (element) => isTextElement(element) ||
|
|
537
|
+
getBoundTextElement(element, app.scene.getNonDeletedElementsMap()) !== null, (hasSelection) => (hasSelection ? null : VERTICAL_ALIGN.MIDDLE)), onChange: (value) => updateData(value) }) }));
|
|
533
538
|
},
|
|
534
539
|
});
|
|
535
540
|
export const actionChangeRoundness = register({
|
|
@@ -26,7 +26,7 @@ export declare const actionSelectAll: {
|
|
|
26
26
|
errorMessage: import("react").ReactNode;
|
|
27
27
|
activeEmbeddable: {
|
|
28
28
|
element: import("../element/types").NonDeletedExcalidrawElement;
|
|
29
|
-
state: "
|
|
29
|
+
state: "hover" | "active";
|
|
30
30
|
} | null;
|
|
31
31
|
draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
32
32
|
resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
@@ -74,7 +74,7 @@ export declare const actionSelectAll: {
|
|
|
74
74
|
scrollY: number;
|
|
75
75
|
cursorButton: "up" | "down";
|
|
76
76
|
scrolledOutside: boolean;
|
|
77
|
-
name: string;
|
|
77
|
+
name: string | null;
|
|
78
78
|
isResizing: boolean;
|
|
79
79
|
isRotating: boolean;
|
|
80
80
|
zoom: Readonly<{
|
|
@@ -94,7 +94,7 @@ export declare const actionSelectAll: {
|
|
|
94
94
|
tab: "text-to-diagram" | "diagram-to-code";
|
|
95
95
|
} | {
|
|
96
96
|
name: "ttd";
|
|
97
|
-
tab: "
|
|
97
|
+
tab: "text-to-diagram" | "mermaid";
|
|
98
98
|
} | null;
|
|
99
99
|
defaultSidebarDockedPreference: boolean;
|
|
100
100
|
lastPointerDownWith: import("../element/types").PointerType;
|
|
@@ -144,7 +144,7 @@ export declare const actionSelectAll: {
|
|
|
144
144
|
data: import("../charts").Spreadsheet;
|
|
145
145
|
};
|
|
146
146
|
pendingImageElementId: string | null;
|
|
147
|
-
showHyperlinkPopup: false | "
|
|
147
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
148
148
|
snapLines: readonly import("../snapping").SnapLine[];
|
|
149
149
|
originSnapOffset: {
|
|
150
150
|
x: number;
|
|
@@ -29,7 +29,7 @@ export const actionSelectAll = register({
|
|
|
29
29
|
// single linear element selected
|
|
30
30
|
Object.keys(selectedElementIds).length === 1 &&
|
|
31
31
|
isLinearElement(elements[0])
|
|
32
|
-
? new LinearElementEditor(elements[0]
|
|
32
|
+
? new LinearElementEditor(elements[0])
|
|
33
33
|
: null,
|
|
34
34
|
},
|
|
35
35
|
commitToHistory: true,
|
|
@@ -5,7 +5,7 @@ export declare const actionCopyStyles: {
|
|
|
5
5
|
trackEvent: {
|
|
6
6
|
category: "element";
|
|
7
7
|
};
|
|
8
|
-
perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState
|
|
8
|
+
perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>, formData: any, app: import("../types").AppClassProperties) => {
|
|
9
9
|
appState: {
|
|
10
10
|
toast: {
|
|
11
11
|
message: string;
|
|
@@ -20,7 +20,7 @@ export declare const actionCopyStyles: {
|
|
|
20
20
|
errorMessage: import("react").ReactNode;
|
|
21
21
|
activeEmbeddable: {
|
|
22
22
|
element: import("../element/types").NonDeletedExcalidrawElement;
|
|
23
|
-
state: "
|
|
23
|
+
state: "hover" | "active";
|
|
24
24
|
} | null;
|
|
25
25
|
draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
26
26
|
resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
@@ -68,7 +68,7 @@ export declare const actionCopyStyles: {
|
|
|
68
68
|
scrollY: number;
|
|
69
69
|
cursorButton: "up" | "down";
|
|
70
70
|
scrolledOutside: boolean;
|
|
71
|
-
name: string;
|
|
71
|
+
name: string | null;
|
|
72
72
|
isResizing: boolean;
|
|
73
73
|
isRotating: boolean;
|
|
74
74
|
zoom: Readonly<{
|
|
@@ -88,7 +88,7 @@ export declare const actionCopyStyles: {
|
|
|
88
88
|
tab: "text-to-diagram" | "diagram-to-code";
|
|
89
89
|
} | {
|
|
90
90
|
name: "ttd";
|
|
91
|
-
tab: "
|
|
91
|
+
tab: "text-to-diagram" | "mermaid";
|
|
92
92
|
} | null;
|
|
93
93
|
defaultSidebarDockedPreference: boolean;
|
|
94
94
|
lastPointerDownWith: import("../element/types").PointerType;
|
|
@@ -140,7 +140,7 @@ export declare const actionCopyStyles: {
|
|
|
140
140
|
data: import("../charts").Spreadsheet;
|
|
141
141
|
};
|
|
142
142
|
pendingImageElementId: string | null;
|
|
143
|
-
showHyperlinkPopup: false | "
|
|
143
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
144
144
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
145
145
|
snapLines: readonly import("../snapping").SnapLine[];
|
|
146
146
|
originSnapOffset: {
|
|
@@ -163,7 +163,7 @@ export declare const actionPasteStyles: {
|
|
|
163
163
|
trackEvent: {
|
|
164
164
|
category: "element";
|
|
165
165
|
};
|
|
166
|
-
perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState
|
|
166
|
+
perform: (elements: readonly import("../element/types").ExcalidrawElement[], appState: Readonly<import("../types").AppState>, formData: any, app: import("../types").AppClassProperties) => {
|
|
167
167
|
elements: readonly import("../element/types").ExcalidrawElement[];
|
|
168
168
|
commitToHistory: false;
|
|
169
169
|
} | {
|
|
@@ -12,12 +12,12 @@ export let copiedStyles = "{}";
|
|
|
12
12
|
export const actionCopyStyles = register({
|
|
13
13
|
name: "copyStyles",
|
|
14
14
|
trackEvent: { category: "element" },
|
|
15
|
-
perform: (elements, appState) => {
|
|
15
|
+
perform: (elements, appState, formData, app) => {
|
|
16
16
|
const elementsCopied = [];
|
|
17
17
|
const element = elements.find((el) => appState.selectedElementIds[el.id]);
|
|
18
18
|
elementsCopied.push(element);
|
|
19
19
|
if (element && hasBoundTextElement(element)) {
|
|
20
|
-
const boundTextElement = getBoundTextElement(element);
|
|
20
|
+
const boundTextElement = getBoundTextElement(element, app.scene.getNonDeletedElementsMap());
|
|
21
21
|
elementsCopied.push(boundTextElement);
|
|
22
22
|
}
|
|
23
23
|
if (element) {
|
|
@@ -37,7 +37,7 @@ export const actionCopyStyles = register({
|
|
|
37
37
|
export const actionPasteStyles = register({
|
|
38
38
|
name: "pasteStyles",
|
|
39
39
|
trackEvent: { category: "element" },
|
|
40
|
-
perform: (elements, appState) => {
|
|
40
|
+
perform: (elements, appState, formData, app) => {
|
|
41
41
|
const elementsCopied = JSON.parse(copiedStyles);
|
|
42
42
|
const pastedElement = elementsCopied[0];
|
|
43
43
|
const boundTextElement = elementsCopied[1];
|
|
@@ -91,7 +91,7 @@ export const actionPasteStyles = register({
|
|
|
91
91
|
selectedElements.find((element) => isTextElement(newElement) &&
|
|
92
92
|
element.id === newElement.containerId) || null;
|
|
93
93
|
}
|
|
94
|
-
redrawTextBoundingBox(newElement, container);
|
|
94
|
+
redrawTextBoundingBox(newElement, container, app.scene.getNonDeletedElementsMap());
|
|
95
95
|
}
|
|
96
96
|
if (newElement.type === "arrow" &&
|
|
97
97
|
isArrowElement(elementStylesToCopyFrom)) {
|
|
@@ -21,7 +21,7 @@ export declare const actionToggleGridMode: {
|
|
|
21
21
|
errorMessage: import("react").ReactNode;
|
|
22
22
|
activeEmbeddable: {
|
|
23
23
|
element: import("../element/types").NonDeletedExcalidrawElement;
|
|
24
|
-
state: "
|
|
24
|
+
state: "hover" | "active";
|
|
25
25
|
} | null;
|
|
26
26
|
draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
27
27
|
resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
@@ -69,7 +69,7 @@ export declare const actionToggleGridMode: {
|
|
|
69
69
|
scrollY: number;
|
|
70
70
|
cursorButton: "up" | "down";
|
|
71
71
|
scrolledOutside: boolean;
|
|
72
|
-
name: string;
|
|
72
|
+
name: string | null;
|
|
73
73
|
isResizing: boolean;
|
|
74
74
|
isRotating: boolean;
|
|
75
75
|
zoom: Readonly<{
|
|
@@ -89,7 +89,7 @@ export declare const actionToggleGridMode: {
|
|
|
89
89
|
tab: "text-to-diagram" | "diagram-to-code";
|
|
90
90
|
} | {
|
|
91
91
|
name: "ttd";
|
|
92
|
-
tab: "
|
|
92
|
+
tab: "text-to-diagram" | "mermaid";
|
|
93
93
|
} | null;
|
|
94
94
|
defaultSidebarDockedPreference: boolean;
|
|
95
95
|
lastPointerDownWith: import("../element/types").PointerType;
|
|
@@ -145,7 +145,7 @@ export declare const actionToggleGridMode: {
|
|
|
145
145
|
data: import("../charts").Spreadsheet;
|
|
146
146
|
};
|
|
147
147
|
pendingImageElementId: string | null;
|
|
148
|
-
showHyperlinkPopup: false | "
|
|
148
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
149
149
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
150
150
|
snapLines: readonly import("../snapping").SnapLine[];
|
|
151
151
|
originSnapOffset: {
|
|
@@ -20,7 +20,7 @@ export declare const actionToggleObjectsSnapMode: {
|
|
|
20
20
|
errorMessage: import("react").ReactNode;
|
|
21
21
|
activeEmbeddable: {
|
|
22
22
|
element: import("../element/types").NonDeletedExcalidrawElement;
|
|
23
|
-
state: "
|
|
23
|
+
state: "hover" | "active";
|
|
24
24
|
} | null;
|
|
25
25
|
draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
26
26
|
resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
@@ -68,7 +68,7 @@ export declare const actionToggleObjectsSnapMode: {
|
|
|
68
68
|
scrollY: number;
|
|
69
69
|
cursorButton: "up" | "down";
|
|
70
70
|
scrolledOutside: boolean;
|
|
71
|
-
name: string;
|
|
71
|
+
name: string | null;
|
|
72
72
|
isResizing: boolean;
|
|
73
73
|
isRotating: boolean;
|
|
74
74
|
zoom: Readonly<{
|
|
@@ -88,7 +88,7 @@ export declare const actionToggleObjectsSnapMode: {
|
|
|
88
88
|
tab: "text-to-diagram" | "diagram-to-code";
|
|
89
89
|
} | {
|
|
90
90
|
name: "ttd";
|
|
91
|
-
tab: "
|
|
91
|
+
tab: "text-to-diagram" | "mermaid";
|
|
92
92
|
} | null;
|
|
93
93
|
defaultSidebarDockedPreference: boolean;
|
|
94
94
|
lastPointerDownWith: import("../element/types").PointerType;
|
|
@@ -144,7 +144,7 @@ export declare const actionToggleObjectsSnapMode: {
|
|
|
144
144
|
data: import("../charts").Spreadsheet;
|
|
145
145
|
};
|
|
146
146
|
pendingImageElementId: string | null;
|
|
147
|
-
showHyperlinkPopup: false | "
|
|
147
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
148
148
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
149
149
|
snapLines: readonly import("../snapping").SnapLine[];
|
|
150
150
|
originSnapOffset: {
|
|
@@ -18,7 +18,7 @@ export declare const actionToggleStats: {
|
|
|
18
18
|
errorMessage: import("react").ReactNode;
|
|
19
19
|
activeEmbeddable: {
|
|
20
20
|
element: import("../element/types").NonDeletedExcalidrawElement;
|
|
21
|
-
state: "
|
|
21
|
+
state: "hover" | "active";
|
|
22
22
|
} | null;
|
|
23
23
|
draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
24
24
|
resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
@@ -66,7 +66,7 @@ export declare const actionToggleStats: {
|
|
|
66
66
|
scrollY: number;
|
|
67
67
|
cursorButton: "up" | "down";
|
|
68
68
|
scrolledOutside: boolean;
|
|
69
|
-
name: string;
|
|
69
|
+
name: string | null;
|
|
70
70
|
isResizing: boolean;
|
|
71
71
|
isRotating: boolean;
|
|
72
72
|
zoom: Readonly<{
|
|
@@ -86,7 +86,7 @@ export declare const actionToggleStats: {
|
|
|
86
86
|
tab: "text-to-diagram" | "diagram-to-code";
|
|
87
87
|
} | {
|
|
88
88
|
name: "ttd";
|
|
89
|
-
tab: "
|
|
89
|
+
tab: "text-to-diagram" | "mermaid";
|
|
90
90
|
} | null;
|
|
91
91
|
defaultSidebarDockedPreference: boolean;
|
|
92
92
|
lastPointerDownWith: import("../element/types").PointerType;
|
|
@@ -142,7 +142,7 @@ export declare const actionToggleStats: {
|
|
|
142
142
|
data: import("../charts").Spreadsheet;
|
|
143
143
|
};
|
|
144
144
|
pendingImageElementId: string | null;
|
|
145
|
-
showHyperlinkPopup: false | "
|
|
145
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
146
146
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
147
147
|
snapLines: readonly import("../snapping").SnapLine[];
|
|
148
148
|
originSnapOffset: {
|
|
@@ -19,7 +19,7 @@ export declare const actionToggleViewMode: {
|
|
|
19
19
|
errorMessage: import("react").ReactNode;
|
|
20
20
|
activeEmbeddable: {
|
|
21
21
|
element: import("../element/types").NonDeletedExcalidrawElement;
|
|
22
|
-
state: "
|
|
22
|
+
state: "hover" | "active";
|
|
23
23
|
} | null;
|
|
24
24
|
draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
25
25
|
resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
@@ -67,7 +67,7 @@ export declare const actionToggleViewMode: {
|
|
|
67
67
|
scrollY: number;
|
|
68
68
|
cursorButton: "up" | "down";
|
|
69
69
|
scrolledOutside: boolean;
|
|
70
|
-
name: string;
|
|
70
|
+
name: string | null;
|
|
71
71
|
isResizing: boolean;
|
|
72
72
|
isRotating: boolean;
|
|
73
73
|
zoom: Readonly<{
|
|
@@ -87,7 +87,7 @@ export declare const actionToggleViewMode: {
|
|
|
87
87
|
tab: "text-to-diagram" | "diagram-to-code";
|
|
88
88
|
} | {
|
|
89
89
|
name: "ttd";
|
|
90
|
-
tab: "
|
|
90
|
+
tab: "text-to-diagram" | "mermaid";
|
|
91
91
|
} | null;
|
|
92
92
|
defaultSidebarDockedPreference: boolean;
|
|
93
93
|
lastPointerDownWith: import("../element/types").PointerType;
|
|
@@ -143,7 +143,7 @@ export declare const actionToggleViewMode: {
|
|
|
143
143
|
data: import("../charts").Spreadsheet;
|
|
144
144
|
};
|
|
145
145
|
pendingImageElementId: string | null;
|
|
146
|
-
showHyperlinkPopup: false | "
|
|
146
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
147
147
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
148
148
|
snapLines: readonly import("../snapping").SnapLine[];
|
|
149
149
|
originSnapOffset: {
|
|
@@ -19,7 +19,7 @@ export declare const actionToggleZenMode: {
|
|
|
19
19
|
errorMessage: import("react").ReactNode;
|
|
20
20
|
activeEmbeddable: {
|
|
21
21
|
element: import("../element/types").NonDeletedExcalidrawElement;
|
|
22
|
-
state: "
|
|
22
|
+
state: "hover" | "active";
|
|
23
23
|
} | null;
|
|
24
24
|
draggingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
25
25
|
resizingElement: import("../element/types").NonDeletedExcalidrawElement | null;
|
|
@@ -67,7 +67,7 @@ export declare const actionToggleZenMode: {
|
|
|
67
67
|
scrollY: number;
|
|
68
68
|
cursorButton: "up" | "down";
|
|
69
69
|
scrolledOutside: boolean;
|
|
70
|
-
name: string;
|
|
70
|
+
name: string | null;
|
|
71
71
|
isResizing: boolean;
|
|
72
72
|
isRotating: boolean;
|
|
73
73
|
zoom: Readonly<{
|
|
@@ -87,7 +87,7 @@ export declare const actionToggleZenMode: {
|
|
|
87
87
|
tab: "text-to-diagram" | "diagram-to-code";
|
|
88
88
|
} | {
|
|
89
89
|
name: "ttd";
|
|
90
|
-
tab: "
|
|
90
|
+
tab: "text-to-diagram" | "mermaid";
|
|
91
91
|
} | null;
|
|
92
92
|
defaultSidebarDockedPreference: boolean;
|
|
93
93
|
lastPointerDownWith: import("../element/types").PointerType;
|
|
@@ -143,7 +143,7 @@ export declare const actionToggleZenMode: {
|
|
|
143
143
|
data: import("../charts").Spreadsheet;
|
|
144
144
|
};
|
|
145
145
|
pendingImageElementId: string | null;
|
|
146
|
-
showHyperlinkPopup: false | "
|
|
146
|
+
showHyperlinkPopup: false | "info" | "editor";
|
|
147
147
|
selectedLinearElement: import("../element/linearElementEditor").LinearElementEditor | null;
|
|
148
148
|
snapLines: readonly import("../snapping").SnapLine[];
|
|
149
149
|
originSnapOffset: {
|
|
@@ -20,6 +20,6 @@ export { actionToggleZenMode } from "./actionToggleZenMode";
|
|
|
20
20
|
export { actionToggleObjectsSnapMode } from "./actionToggleObjectsSnapMode";
|
|
21
21
|
export { actionToggleStats } from "./actionToggleStats";
|
|
22
22
|
export { actionUnbindText, actionBindText } from "./actionBoundText";
|
|
23
|
-
export { actionLink } from "
|
|
23
|
+
export { actionLink } from "./actionLink";
|
|
24
24
|
export { actionToggleElementLock } from "./actionElementLock";
|
|
25
25
|
export { actionToggleLinearEditor } from "./actionLinearEditor";
|
|
@@ -20,6 +20,6 @@ export { actionToggleZenMode } from "./actionToggleZenMode";
|
|
|
20
20
|
export { actionToggleObjectsSnapMode } from "./actionToggleObjectsSnapMode";
|
|
21
21
|
export { actionToggleStats } from "./actionToggleStats";
|
|
22
22
|
export { actionUnbindText, actionBindText } from "./actionBoundText";
|
|
23
|
-
export { actionLink } from "
|
|
23
|
+
export { actionLink } from "./actionLink";
|
|
24
24
|
export { actionToggleElementLock } from "./actionElementLock";
|
|
25
25
|
export { actionToggleLinearEditor } from "./actionLinearEditor";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { trackEvent } from "../analytics";
|
|
3
|
+
import { isPromiseLike } from "../utils";
|
|
3
4
|
const trackAction = (action, source, appState, elements, app, value) => {
|
|
4
5
|
if (action.trackEvent) {
|
|
5
6
|
try {
|
|
@@ -25,7 +26,7 @@ export class ActionManager {
|
|
|
25
26
|
app;
|
|
26
27
|
constructor(updater, getAppState, getElementsIncludingDeleted, app) {
|
|
27
28
|
this.updater = (actionResult) => {
|
|
28
|
-
if (actionResult
|
|
29
|
+
if (isPromiseLike(actionResult)) {
|
|
29
30
|
actionResult.then((actionResult) => {
|
|
30
31
|
return updater(actionResult);
|
|
31
32
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ExcalidrawElement } from "./element/types";
|
|
1
|
+
import { ElementsMap, ExcalidrawElement } from "./element/types";
|
|
2
2
|
export interface Alignment {
|
|
3
3
|
position: "start" | "center" | "end";
|
|
4
4
|
axis: "x" | "y";
|
|
5
5
|
}
|
|
6
|
-
export declare const alignElements: (selectedElements: ExcalidrawElement[], alignment: Alignment) => ExcalidrawElement[];
|
|
6
|
+
export declare const alignElements: (selectedElements: ExcalidrawElement[], elementsMap: ElementsMap, alignment: Alignment) => ExcalidrawElement[];
|
package/dist/excalidraw/align.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { newElementWith } from "./element/mutateElement";
|
|
2
2
|
import { getCommonBoundingBox } from "./element/bounds";
|
|
3
3
|
import { getMaximumGroups } from "./groups";
|
|
4
|
-
export const alignElements = (selectedElements, alignment) => {
|
|
5
|
-
const groups = getMaximumGroups(selectedElements);
|
|
4
|
+
export const alignElements = (selectedElements, elementsMap, alignment) => {
|
|
5
|
+
const groups = getMaximumGroups(selectedElements, elementsMap);
|
|
6
6
|
const selectionBoundingBox = getCommonBoundingBox(selectedElements);
|
|
7
7
|
return groups.flatMap((group) => {
|
|
8
8
|
const translation = calculateTranslation(group, selectionBoundingBox, alignment);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { LaserPointerOptions } from "@excalidraw/laser-pointer";
|
|
2
|
+
import { AnimationFrameHandler } from "./animation-frame-handler";
|
|
3
|
+
import type App from "./components/App";
|
|
4
|
+
export interface Trail {
|
|
5
|
+
start(container: SVGSVGElement): void;
|
|
6
|
+
stop(): void;
|
|
7
|
+
startPath(x: number, y: number): void;
|
|
8
|
+
addPointToPath(x: number, y: number): void;
|
|
9
|
+
endPath(): void;
|
|
10
|
+
}
|
|
11
|
+
export interface AnimatedTrailOptions {
|
|
12
|
+
fill: (trail: AnimatedTrail) => string;
|
|
13
|
+
}
|
|
14
|
+
export declare class AnimatedTrail implements Trail {
|
|
15
|
+
private animationFrameHandler;
|
|
16
|
+
private app;
|
|
17
|
+
private options;
|
|
18
|
+
private currentTrail?;
|
|
19
|
+
private pastTrails;
|
|
20
|
+
private container?;
|
|
21
|
+
private trailElement;
|
|
22
|
+
constructor(animationFrameHandler: AnimationFrameHandler, app: App, options: Partial<LaserPointerOptions> & Partial<AnimatedTrailOptions>);
|
|
23
|
+
get hasCurrentTrail(): boolean;
|
|
24
|
+
hasLastPoint(x: number, y: number): boolean;
|
|
25
|
+
start(container?: SVGSVGElement): void;
|
|
26
|
+
stop(): void;
|
|
27
|
+
startPath(x: number, y: number): void;
|
|
28
|
+
addPointToPath(x: number, y: number): void;
|
|
29
|
+
endPath(): void;
|
|
30
|
+
private update;
|
|
31
|
+
private onFrame;
|
|
32
|
+
private drawTrail;
|
|
33
|
+
}
|