@dwelle/excalidraw 0.3.48 → 0.3.49

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.
@@ -1591,7 +1591,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1591
1591
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1592
1592
 
1593
1593
  "use strict";
1594
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SelectedShapeActions\": () => (/* binding */ SelectedShapeActions),\n/* harmony export */ \"ShapesSwitcher\": () => (/* binding */ ShapesSwitcher),\n/* harmony export */ \"ZoomActions\": () => (/* binding */ ZoomActions)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/App */ \"../../components/App.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shapes */ \"../../shapes.tsx\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene/comparisons */ \"../../scene/comparisons.ts\");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ \"../../element/typeChecks.ts\");\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst SelectedShapeActions = ({ appState, elements, renderAction, elementType, }) => {\r\n var _a;\r\n const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements), appState);\r\n let isSingleElementBoundContainer = false;\r\n if (targetElements.length === 2 &&\r\n ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[0]) ||\r\n (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[1]))) {\r\n isSingleElementBoundContainer = true;\r\n }\r\n const isEditing = Boolean(appState.editingElement);\r\n const isMobile = (0,_components_App__WEBPACK_IMPORTED_MODULE_4__.useIsMobile)();\r\n const isRTL = document.documentElement.getAttribute(\"dir\") === \"rtl\";\r\n const showFillIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_7__.isTransparent)(element.backgroundColor));\r\n const showChangeBackgroundIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type));\r\n let commonSelectedType = ((_a = targetElements[0]) === null || _a === void 0 ? void 0 : _a.type) || null;\r\n for (const element of targetElements) {\r\n if (element.type !== commonSelectedType) {\r\n commonSelectedType = null;\r\n break;\r\n }\r\n }\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"panelColumn\" }, { children: [(((0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(elementType) &&\r\n elementType !== \"image\" &&\r\n commonSelectedType !== \"image\") ||\r\n targetElements.some((element) => (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(element.type))) &&\r\n renderAction(\"changeStrokeColor\"), showChangeBackgroundIcons && renderAction(\"changeBackgroundColor\"), showFillIcons && renderAction(\"changeFillStyle\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(element.type))) &&\r\n renderAction(\"changeStrokeWidth\"), (elementType === \"freedraw\" ||\r\n targetElements.some((element) => element.type === \"freedraw\")) &&\r\n renderAction(\"changeStrokeShape\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"changeStrokeStyle\"), renderAction(\"changeSloppiness\")] }, void 0)), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeSharpness)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeSharpness)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: renderAction(\"changeSharpness\") }, void 0)), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasText)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasText)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"changeFontSize\"), renderAction(\"changeFontFamily\"), renderAction(\"changeTextAlign\")] }, void 0)), targetElements.every((element) => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(element)) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: renderAction(\"changeVerticalAlign\") }, void 0), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: renderAction(\"changeArrowhead\") }, void 0)), renderAction(\"changeOpacity\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.layers\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"buttonList\" }, { children: [renderAction(\"sendToBack\"), renderAction(\"sendBackward\"), renderAction(\"bringToFront\"), renderAction(\"bringForward\")] }), void 0)] }, void 0), targetElements.length > 1 && !isSingleElementBoundContainer && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.align\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"buttonList\" }, { children: [isRTL ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"alignRight\"), renderAction(\"alignHorizontallyCentered\"), renderAction(\"alignLeft\")] }, void 0)) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"alignLeft\"), renderAction(\"alignHorizontallyCentered\"), renderAction(\"alignRight\")] }, void 0)), targetElements.length > 2 &&\r\n renderAction(\"distributeHorizontally\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"iconRow\" }, { children: [renderAction(\"alignTop\"), renderAction(\"alignVerticallyCentered\"), renderAction(\"alignBottom\"), targetElements.length > 2 &&\r\n renderAction(\"distributeVertically\")] }), void 0)] }), void 0)] }, void 0)), !isEditing && targetElements.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.actions\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"buttonList\" }, { children: [!isMobile && renderAction(\"duplicateSelection\"), !isMobile && renderAction(\"deleteSelectedElements\"), renderAction(\"group\"), renderAction(\"ungroup\"), targetElements.length === 1 && renderAction(\"hyperlink\")] }), void 0)] }, void 0))] }), void 0));\r\n};\r\nconst ShapesSwitcher = ({ canvas, elementType, setAppState, onImageAction, }) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: _shapes__WEBPACK_IMPORTED_MODULE_6__.SHAPES.map(({ value, icon, key }, index) => {\r\n const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`toolBar.${value}`);\r\n const letter = key && (typeof key === \"string\" ? key : key[0]);\r\n const shortcut = letter\r\n ? `${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(letter)} ${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"helpDialog.or\")} ${index + 1}`\r\n : `${index + 1}`;\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_9__.ToolButton, { className: \"Shape\", type: \"radio\", icon: icon, checked: elementType === value, name: \"editor-current-shape\", title: `${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label)} — ${shortcut}`, keyBindingLabel: `${index + 1}`, \"aria-label\": (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label), \"aria-keyshortcuts\": shortcut, \"data-testid\": value, onChange: ({ pointerType }) => {\r\n setAppState({\r\n elementType: value,\r\n multiElement: null,\r\n selectedElementIds: {},\r\n });\r\n (0,_utils__WEBPACK_IMPORTED_MODULE_7__.setCursorForShape)(canvas, value);\r\n if (value === \"image\") {\r\n onImageAction({ pointerType });\r\n }\r\n } }, value));\r\n }) }, void 0));\r\nconst ZoomActions = ({ renderAction, zoom, }) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_8__[\"default\"].Col, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_8__[\"default\"].Row, Object.assign({ gap: 1, align: \"center\" }, { children: [renderAction(\"zoomOut\"), renderAction(\"zoomIn\"), renderAction(\"resetZoom\")] }), void 0) }), void 0));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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c0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQWN0aW9uTWFuYWdlciB9IGZyb20gXCIuLi9hY3Rpb25zL21hbmFnZXJcIjtcbmltcG9ydCB7IGdldE5vbkRlbGV0ZWRFbGVtZW50cyB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyBFeGNhbGlkcmF3RWxlbWVudCwgUG9pbnRlclR5cGUgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlc1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyB1c2VJc01vYmlsZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL0FwcFwiO1xuaW1wb3J0IHtcbiAgY2FuQ2hhbmdlU2hhcnBuZXNzLFxuICBjYW5IYXZlQXJyb3doZWFkcyxcbiAgZ2V0VGFyZ2V0RWxlbWVudHMsXG4gIGhhc0JhY2tncm91bmQsXG4gIGhhc1N0cm9rZVN0eWxlLFxuICBoYXNTdHJva2VXaWR0aCxcbiAgaGFzVGV4dCxcbn0gZnJvbSBcIi4uL3NjZW5lXCI7XG5pbXBvcnQgeyBTSEFQRVMgfSBmcm9tIFwiLi4vc2hhcGVzXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgWm9vbSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZVN0cmluZywgaXNUcmFuc3BhcmVudCwgc2V0Q3Vyc29yRm9yU2hhcGUgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiLi9TdGFja1wiO1xuaW1wb3J0IHsgVG9vbEJ1dHRvbiB9IGZyb20gXCIuL1Rvb2xCdXR0b25cIjtcbmltcG9ydCB7IGhhc1N0cm9rZUNvbG9yIH0gZnJvbSBcIi4uL3NjZW5lL2NvbXBhcmlzb25zXCI7XG5pbXBvcnQgeyBoYXNCb3VuZFRleHRFbGVtZW50LCBpc0JvdW5kVG9Db250YWluZXIgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RlZFNoYXBlQWN0aW9ucyA9ICh7XG4gIGFwcFN0YXRlLFxuICBlbGVtZW50cyxcbiAgcmVuZGVyQWN0aW9uLFxuICBlbGVtZW50VHlwZSxcbn06IHtcbiAgYXBwU3RhdGU6IEFwcFN0YXRlO1xuICBlbGVtZW50czogcmVhZG9ubHkgRXhjYWxpZHJhd0VsZW1lbnRbXTtcbiAgcmVuZGVyQWN0aW9uOiBBY3Rpb25NYW5hZ2VyW1wicmVuZGVyQWN0aW9uXCJdO1xuICBlbGVtZW50VHlwZTogRXhjYWxpZHJhd0VsZW1lbnRbXCJ0eXBlXCJdO1xufSkgPT4ge1xuICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IGdldFRhcmdldEVsZW1lbnRzKFxuICAgIGdldE5vbkRlbGV0ZWRFbGVtZW50cyhlbGVtZW50cyksXG4gICAgYXBwU3RhdGUsXG4gICk7XG5cbiAgbGV0IGlzU2luZ2xlRWxlbWVudEJvdW5kQ29udGFpbmVyID0gZmFsc2U7XG4gIGlmIChcbiAgICB0YXJnZXRFbGVtZW50cy5sZW5ndGggPT09IDIgJiZcbiAgICAoaGFzQm91bmRUZXh0RWxlbWVudCh0YXJnZXRFbGVtZW50c1swXSkgfHxcbiAgICAgIGhhc0JvdW5kVGV4dEVsZW1lbnQodGFyZ2V0RWxlbWVudHNbMV0pKVxuICApIHtcbiAgICBpc1NpbmdsZUVsZW1lbnRCb3VuZENvbnRhaW5lciA9IHRydWU7XG4gIH1cbiAgY29uc3QgaXNFZGl0aW5nID0gQm9vbGVhbihhcHBTdGF0ZS5lZGl0aW5nRWxlbWVudCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlSXNNb2JpbGUoKTtcbiAgY29uc3QgaXNSVEwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGlyXCIpID09PSBcInJ0bFwiO1xuXG4gIGNvbnN0IHNob3dGaWxsSWNvbnMgPVxuICAgIGhhc0JhY2tncm91bmQoZWxlbWVudFR5cGUpIHx8XG4gICAgdGFyZ2V0RWxlbWVudHMuc29tZShcbiAgICAgIChlbGVtZW50KSA9PlxuICAgICAgICBoYXNCYWNrZ3JvdW5kKGVsZW1lbnQudHlwZSkgJiYgIWlzVHJhbnNwYXJlbnQoZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3IpLFxuICAgICk7XG4gIGNvbnN0IHNob3dDaGFuZ2VCYWNrZ3JvdW5kSWNvbnMgPVxuICAgIGhhc0JhY2tncm91bmQoZWxlbWVudFR5cGUpIHx8XG4gICAgdGFyZ2V0RWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gaGFzQmFja2dyb3VuZChlbGVtZW50LnR5cGUpKTtcblxuICBsZXQgY29tbW9uU2VsZWN0ZWRUeXBlOiBzdHJpbmcgfCBudWxsID0gdGFyZ2V0RWxlbWVudHNbMF0/LnR5cGUgfHwgbnVsbDtcblxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGFyZ2V0RWxlbWVudHMpIHtcbiAgICBpZiAoZWxlbWVudC50eXBlICE9PSBjb21tb25TZWxlY3RlZFR5cGUpIHtcbiAgICAgIGNvbW1vblNlbGVjdGVkVHlwZSA9IG51bGw7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWxDb2x1bW5cIj5cbiAgICAgIHsoKGhhc1N0cm9rZUNvbG9yKGVsZW1lbnRUeXBlKSAmJlxuICAgICAgICBlbGVtZW50VHlwZSAhPT0gXCJpbWFnZVwiICYmXG4gICAgICAgIGNvbW1vblNlbGVjdGVkVHlwZSAhPT0gXCJpbWFnZVwiKSB8fFxuICAgICAgICB0YXJnZXRFbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBoYXNTdHJva2VDb2xvcihlbGVtZW50LnR5cGUpKSkgJiZcbiAgICAgICAgcmVuZGVyQWN0aW9uKFwiY2hhbmdlU3Ryb2tlQ29sb3JcIil9XG4gICAgICB7c2hvd0NoYW5nZUJhY2tncm91bmRJY29ucyAmJiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VCYWNrZ3JvdW5kQ29sb3JcIil9XG4gICAgICB7c2hvd0ZpbGxJY29ucyAmJiByZW5kZXJBY3Rpb24oXCJjaGFuZ2VGaWxsU3R5bGVcIil9XG5cbiAgICAgIHsoaGFzU3Ryb2tlV2lkdGgoZWxlbWVudFR5cGUpIHx8XG4gICAgICAgIHRhcmdldEVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGhhc1N0cm9rZVdpZHRoKGVsZW1lbnQudHlwZSkpKSAmJlxuICAgICAgICByZW5kZXJBY3Rpb24oXCJjaGFuZ2VTdHJva2VXaWR0aFwiKX1cblxuICAgICAgeyhlbGVtZW50VHlwZSA9PT0gXCJmcmVlZHJhd1wiIHx8XG4gICAgICAgIHRhcmdldEVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQudHlwZSA9PT0gXCJmcmVlZHJhd1wiKSkgJiZcbiAgICAgICAgcmVuZGVyQWN0aW9uKFwiY2hhbmdlU3Ryb2tlU2hhcGVcIil9XG5cbiAgICAgIHsoaGFzU3Ryb2tlU3R5bGUoZWxlbWVudFR5cGUpIHx8XG4gICAgICAgIHRhcmdldEVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGhhc1N0cm9rZVN0eWxlKGVsZW1lbnQudHlwZSkpKSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlbmRlckFjdGlvbihcImNoYW5nZVN0cm9rZVN0eWxlXCIpfVxuICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJjaGFuZ2VTbG9wcGluZXNzXCIpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHsoY2FuQ2hhbmdlU2hhcnBuZXNzKGVsZW1lbnRUeXBlKSB8fFxuICAgICAgICB0YXJnZXRFbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBjYW5DaGFuZ2VTaGFycG5lc3MoZWxlbWVudC50eXBlKSkpICYmIChcbiAgICAgICAgPD57cmVuZGVyQWN0aW9uKFwiY2hhbmdlU2hhcnBuZXNzXCIpfTwvPlxuICAgICAgKX1cblxuICAgICAgeyhoYXNUZXh0KGVsZW1lbnRUeXBlKSB8fFxuICAgICAgICB0YXJnZXRFbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBoYXNUZXh0KGVsZW1lbnQudHlwZSkpKSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlbmRlckFjdGlvbihcImNoYW5nZUZvbnRTaXplXCIpfVxuXG4gICAgICAgICAge3JlbmRlckFjdGlvbihcImNoYW5nZUZvbnRGYW1pbHlcIil9XG5cbiAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiY2hhbmdlVGV4dEFsaWduXCIpfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHt0YXJnZXRFbGVtZW50cy5ldmVyeShcbiAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgaGFzQm91bmRUZXh0RWxlbWVudChlbGVtZW50KSB8fCBpc0JvdW5kVG9Db250YWluZXIoZWxlbWVudCksXG4gICAgICApICYmIDw+e3JlbmRlckFjdGlvbihcImNoYW5nZVZlcnRpY2FsQWxpZ25cIil9PC8+fVxuICAgICAgeyhjYW5IYXZlQXJyb3doZWFkcyhlbGVtZW50VHlwZSkgfHxcbiAgICAgICAgdGFyZ2V0RWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gY2FuSGF2ZUFycm93aGVhZHMoZWxlbWVudC50eXBlKSkpICYmIChcbiAgICAgICAgPD57cmVuZGVyQWN0aW9uKFwiY2hhbmdlQXJyb3doZWFkXCIpfTwvPlxuICAgICAgKX1cblxuICAgICAge3JlbmRlckFjdGlvbihcImNoYW5nZU9wYWNpdHlcIil9XG5cbiAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgPGxlZ2VuZD57dChcImxhYmVscy5sYXllcnNcIil9PC9sZWdlbmQ+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uTGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJzZW5kVG9CYWNrXCIpfVxuICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJzZW5kQmFja3dhcmRcIil9XG4gICAgICAgICAge3JlbmRlckFjdGlvbihcImJyaW5nVG9Gcm9udFwiKX1cbiAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYnJpbmdGb3J3YXJkXCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZmllbGRzZXQ+XG5cbiAgICAgIHt0YXJnZXRFbGVtZW50cy5sZW5ndGggPiAxICYmICFpc1NpbmdsZUVsZW1lbnRCb3VuZENvbnRhaW5lciAmJiAoXG4gICAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgICA8bGVnZW5kPnt0KFwibGFiZWxzLmFsaWduXCIpfTwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uTGlzdFwiPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAvLyBzd2FwIHRoaXMgb3JkZXIgZm9yIFJUTCBzbyB0aGUgYnV0dG9uIHBvc2l0aW9ucyBhbHdheXMgbWF0Y2ggdGhlaXIgYWN0aW9uXG4gICAgICAgICAgICAgIC8vIChpLmUuIHRoZSBsZWZ0bW9zdCBidXR0b24gYWxpZ25zIGxlZnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7aXNSVEwgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduUmlnaHRcIil9XG4gICAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduSG9yaXpvbnRhbGx5Q2VudGVyZWRcIil9XG4gICAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduTGVmdFwiKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJhbGlnbkxlZnRcIil9XG4gICAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduSG9yaXpvbnRhbGx5Q2VudGVyZWRcIil9XG4gICAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduUmlnaHRcIil9XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHt0YXJnZXRFbGVtZW50cy5sZW5ndGggPiAyICYmXG4gICAgICAgICAgICAgIHJlbmRlckFjdGlvbihcImRpc3RyaWJ1dGVIb3Jpem9udGFsbHlcIil9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25Sb3dcIj5cbiAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduVG9wXCIpfVxuICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYWxpZ25WZXJ0aWNhbGx5Q2VudGVyZWRcIil9XG4gICAgICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJhbGlnbkJvdHRvbVwiKX1cbiAgICAgICAgICAgICAge3RhcmdldEVsZW1lbnRzLmxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICAgICByZW5kZXJBY3Rpb24oXCJkaXN0cmlidXRlVmVydGljYWxseVwiKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgKX1cbiAgICAgIHshaXNFZGl0aW5nICYmIHRhcmdldEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZmllbGRzZXQ+XG4gICAgICAgICAgPGxlZ2VuZD57dChcImxhYmVscy5hY3Rpb25zXCIpfTwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uTGlzdFwiPlxuICAgICAgICAgICAgeyFpc01vYmlsZSAmJiByZW5kZXJBY3Rpb24oXCJkdXBsaWNhdGVTZWxlY3Rpb25cIil9XG4gICAgICAgICAgICB7IWlzTW9iaWxlICYmIHJlbmRlckFjdGlvbihcImRlbGV0ZVNlbGVjdGVkRWxlbWVudHNcIil9XG4gICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiZ3JvdXBcIil9XG4gICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwidW5ncm91cFwiKX1cbiAgICAgICAgICAgIHt0YXJnZXRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgcmVuZGVyQWN0aW9uKFwiaHlwZXJsaW5rXCIpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTaGFwZXNTd2l0Y2hlciA9ICh7XG4gIGNhbnZhcyxcbiAgZWxlbWVudFR5cGUsXG4gIHNldEFwcFN0YXRlLFxuICBvbkltYWdlQWN0aW9uLFxufToge1xuICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbDtcbiAgZWxlbWVudFR5cGU6IEV4Y2FsaWRyYXdFbGVtZW50W1widHlwZVwiXTtcbiAgc2V0QXBwU3RhdGU6IFJlYWN0LkNvbXBvbmVudDxhbnksIEFwcFN0YXRlPltcInNldFN0YXRlXCJdO1xuICBvbkltYWdlQWN0aW9uOiAoZGF0YTogeyBwb2ludGVyVHlwZTogUG9pbnRlclR5cGUgfCBudWxsIH0pID0+IHZvaWQ7XG59KSA9PiAoXG4gIDw+XG4gICAge1NIQVBFUy5tYXAoKHsgdmFsdWUsIGljb24sIGtleSB9LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSB0KGB0b29sQmFyLiR7dmFsdWV9YCk7XG4gICAgICBjb25zdCBsZXR0ZXIgPSBrZXkgJiYgKHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIgPyBrZXkgOiBrZXlbMF0pO1xuICAgICAgY29uc3Qgc2hvcnRjdXQgPSBsZXR0ZXJcbiAgICAgICAgPyBgJHtjYXBpdGFsaXplU3RyaW5nKGxldHRlcil9ICR7dChcImhlbHBEaWFsb2cub3JcIil9ICR7aW5kZXggKyAxfWBcbiAgICAgICAgOiBgJHtpbmRleCArIDF9YDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUb29sQnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiU2hhcGVcIlxuICAgICAgICAgIGtleT17dmFsdWV9XG4gICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICBpY29uPXtpY29ufVxuICAgICAgICAgIGNoZWNrZWQ9e2VsZW1lbnRUeXBlID09PSB2YWx1ZX1cbiAgICAgICAgICBuYW1lPVwiZWRpdG9yLWN1cnJlbnQtc2hhcGVcIlxuICAgICAgICAgIHRpdGxlPXtgJHtjYXBpdGFsaXplU3RyaW5nKGxhYmVsKX0g4oCUICR7c2hvcnRjdXR9YH1cbiAgICAgICAgICBrZXlCaW5kaW5nTGFiZWw9e2Ake2luZGV4ICsgMX1gfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e2NhcGl0YWxpemVTdHJpbmcobGFiZWwpfVxuICAgICAgICAgIGFyaWEta2V5c2hvcnRjdXRzPXtzaG9ydGN1dH1cbiAgICAgICAgICBkYXRhLXRlc3RpZD17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyh7IHBvaW50ZXJUeXBlIH0pID0+IHtcbiAgICAgICAgICAgIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICAgICAgZWxlbWVudFR5cGU6IHZhbHVlLFxuICAgICAgICAgICAgICBtdWx0aUVsZW1lbnQ6IG51bGwsXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudElkczoge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldEN1cnNvckZvclNoYXBlKGNhbnZhcywgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBcImltYWdlXCIpIHtcbiAgICAgICAgICAgICAgb25JbWFnZUFjdGlvbih7IHBvaW50ZXJUeXBlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH0pfVxuICA8Lz5cbik7XG5cbmV4cG9ydCBjb25zdCBab29tQWN0aW9ucyA9ICh7XG4gIHJlbmRlckFjdGlvbixcbiAgem9vbSxcbn06IHtcbiAgcmVuZGVyQWN0aW9uOiBBY3Rpb25NYW5hZ2VyW1wicmVuZGVyQWN0aW9uXCJdO1xuICB6b29tOiBab29tO1xufSkgPT4gKFxuICA8U3RhY2suQ29sIGdhcD17MX0+XG4gICAgPFN0YWNrLlJvdyBnYXA9ezF9IGFsaWduPVwiY2VudGVyXCI+XG4gICAgICB7cmVuZGVyQWN0aW9uKFwiem9vbU91dFwiKX1cbiAgICAgIHtyZW5kZXJBY3Rpb24oXCJ6b29tSW5cIil9XG4gICAgICB7cmVuZGVyQWN0aW9uKFwicmVzZXRab29tXCIpfVxuICAgIDwvU3RhY2suUm93PlxuICA8L1N0YWNrLkNvbD5cbik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Actions.tsx\n");
1594
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SelectedShapeActions\": () => (/* binding */ SelectedShapeActions),\n/* harmony export */ \"ShapesSwitcher\": () => (/* binding */ ShapesSwitcher),\n/* harmony export */ \"ZoomActions\": () => (/* binding */ ZoomActions)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/App */ \"../../components/App.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shapes */ \"../../shapes.tsx\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene/comparisons */ \"../../scene/comparisons.ts\");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ \"../../element/typeChecks.ts\");\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst SelectedShapeActions = ({ appState, elements, renderAction, elementType, }) => {\r\n var _a;\r\n const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements), appState);\r\n let isSingleElementBoundContainer = false;\r\n if (targetElements.length === 2 &&\r\n ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[0]) ||\r\n (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(targetElements[1]))) {\r\n isSingleElementBoundContainer = true;\r\n }\r\n const isEditing = Boolean(appState.editingElement);\r\n const isMobile = (0,_components_App__WEBPACK_IMPORTED_MODULE_4__.useIsMobile)();\r\n const isRTL = document.documentElement.getAttribute(\"dir\") === \"rtl\";\r\n const showFillIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_7__.isTransparent)(element.backgroundColor));\r\n const showChangeBackgroundIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type));\r\n let commonSelectedType = ((_a = targetElements[0]) === null || _a === void 0 ? void 0 : _a.type) || null;\r\n for (const element of targetElements) {\r\n if (element.type !== commonSelectedType) {\r\n commonSelectedType = null;\r\n break;\r\n }\r\n }\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"panelColumn\" }, { children: [(((0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(elementType) &&\r\n elementType !== \"image\" &&\r\n commonSelectedType !== \"image\") ||\r\n targetElements.some((element) => (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(element.type))) &&\r\n renderAction(\"changeStrokeColor\"), showChangeBackgroundIcons && renderAction(\"changeBackgroundColor\"), showFillIcons && renderAction(\"changeFillStyle\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(element.type))) &&\r\n renderAction(\"changeStrokeWidth\"), (elementType === \"freedraw\" ||\r\n targetElements.some((element) => element.type === \"freedraw\")) &&\r\n renderAction(\"changeStrokeShape\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"changeStrokeStyle\"), renderAction(\"changeSloppiness\")] }, void 0)), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeSharpness)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeSharpness)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: renderAction(\"changeSharpness\") }, void 0)), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasText)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasText)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"changeFontSize\"), renderAction(\"changeFontFamily\"), renderAction(\"changeTextAlign\")] }, void 0)), targetElements.some((element) => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.hasBoundTextElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(element)) && renderAction(\"changeVerticalAlign\"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(elementType) ||\r\n targetElements.some((element) => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(element.type))) && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: renderAction(\"changeArrowhead\") }, void 0)), renderAction(\"changeOpacity\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.layers\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"buttonList\" }, { children: [renderAction(\"sendToBack\"), renderAction(\"sendBackward\"), renderAction(\"bringToFront\"), renderAction(\"bringForward\")] }), void 0)] }, void 0), targetElements.length > 1 && !isSingleElementBoundContainer && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.align\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"buttonList\" }, { children: [isRTL ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"alignRight\"), renderAction(\"alignHorizontallyCentered\"), renderAction(\"alignLeft\")] }, void 0)) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderAction(\"alignLeft\"), renderAction(\"alignHorizontallyCentered\"), renderAction(\"alignRight\")] }, void 0)), targetElements.length > 2 &&\r\n renderAction(\"distributeHorizontally\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"iconRow\" }, { children: [renderAction(\"alignTop\"), renderAction(\"alignVerticallyCentered\"), renderAction(\"alignBottom\"), targetElements.length > 2 &&\r\n renderAction(\"distributeVertically\")] }), void 0)] }), void 0)] }, void 0)), !isEditing && targetElements.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.actions\") }, void 0), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"buttonList\" }, { children: [!isMobile && renderAction(\"duplicateSelection\"), !isMobile && renderAction(\"deleteSelectedElements\"), renderAction(\"group\"), renderAction(\"ungroup\"), targetElements.length === 1 && renderAction(\"hyperlink\")] }), void 0)] }, void 0))] }), void 0));\r\n};\r\nconst ShapesSwitcher = ({ canvas, elementType, setAppState, onImageAction, }) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: _shapes__WEBPACK_IMPORTED_MODULE_6__.SHAPES.map(({ value, icon, key }, index) => {\r\n const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`toolBar.${value}`);\r\n const letter = key && (typeof key === \"string\" ? key : key[0]);\r\n const shortcut = letter\r\n ? `${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(letter)} ${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"helpDialog.or\")} ${index + 1}`\r\n : `${index + 1}`;\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_9__.ToolButton, { className: \"Shape\", type: \"radio\", icon: icon, checked: elementType === value, name: \"editor-current-shape\", title: `${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label)} — ${shortcut}`, keyBindingLabel: `${index + 1}`, \"aria-label\": (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label), \"aria-keyshortcuts\": shortcut, \"data-testid\": value, onChange: ({ pointerType }) => {\r\n setAppState({\r\n elementType: value,\r\n multiElement: null,\r\n selectedElementIds: {},\r\n });\r\n (0,_utils__WEBPACK_IMPORTED_MODULE_7__.setCursorForShape)(canvas, value);\r\n if (value === \"image\") {\r\n onImageAction({ pointerType });\r\n }\r\n } }, value));\r\n }) }, void 0));\r\nconst ZoomActions = ({ renderAction, zoom, }) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_8__[\"default\"].Col, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_8__[\"default\"].Row, Object.assign({ gap: 1, align: \"center\" }, { children: [renderAction(\"zoomOut\"), renderAction(\"zoomIn\"), renderAction(\"resetZoom\")] }), void 0) }), void 0));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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WixJQUFJLEVBQUUsSUFBSSxFQUNWLE9BQU8sRUFBRSxXQUFXLEtBQUssS0FBSyxFQUM5QixJQUFJLEVBQUMsc0JBQXNCLEVBQzNCLEtBQUssRUFBRSxHQUFHLHdEQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLFFBQVEsRUFBRSxFQUNqRCxlQUFlLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLGdCQUNuQix3REFBZ0IsQ0FBQyxLQUFLLENBQUMsdUJBQ2hCLFFBQVEsaUJBQ2QsS0FBSyxFQUNsQixRQUFRLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7Z0JBQzVCLFdBQVcsQ0FBQztvQkFDVixXQUFXLEVBQUUsS0FBSztvQkFDbEIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGtCQUFrQixFQUFFLEVBQUU7aUJBQ3ZCLENBQUMsQ0FBQztnQkFDSCx5REFBaUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtvQkFDckIsYUFBYSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztpQkFDaEM7WUFDSCxDQUFDLElBcEJJLEtBQUssQ0FxQlYsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDLFdBQ0QsQ0FDSixDQUFDO0FBRUssTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osSUFBSSxHQUlMLEVBQUUsRUFBRSxDQUFDLENBQ0osdURBQUMsa0RBQVMsa0JBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQ2Ysd0RBQUMsa0RBQVMsa0JBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUMsUUFBUSxpQkFDOUIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUN2QixZQUFZLENBQUMsUUFBUSxDQUFDLEVBQ3RCLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFDaEIsWUFDRixDQUNiLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9BY3Rpb25zLnRzeD9iMTI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEFjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi4vYWN0aW9ucy9tYW5hZ2VyXCI7XG5pbXBvcnQgeyBnZXROb25EZWxldGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgRXhjYWxpZHJhd0VsZW1lbnQsIFBvaW50ZXJUeXBlIH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlSXNNb2JpbGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9BcHBcIjtcbmltcG9ydCB7XG4gIGNhbkNoYW5nZVNoYXJwbmVzcyxcbiAgY2FuSGF2ZUFycm93aGVhZHMsXG4gIGdldFRhcmdldEVsZW1lbnRzLFxuICBoYXNCYWNrZ3JvdW5kLFxuICBoYXNTdHJva2VTdHlsZSxcbiAgaGFzU3Ryb2tlV2lkdGgsXG4gIGhhc1RleHQsXG59IGZyb20gXCIuLi9zY2VuZVwiO1xuaW1wb3J0IHsgU0hBUEVTIH0gZnJvbSBcIi4uL3NoYXBlc1wiO1xuaW1wb3J0IHsgQXBwU3RhdGUsIFpvb20gfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGNhcGl0YWxpemVTdHJpbmcsIGlzVHJhbnNwYXJlbnQsIHNldEN1cnNvckZvclNoYXBlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIi4vU3RhY2tcIjtcbmltcG9ydCB7IFRvb2xCdXR0b24gfSBmcm9tIFwiLi9Ub29sQnV0dG9uXCI7XG5pbXBvcnQgeyBoYXNTdHJva2VDb2xvciB9IGZyb20gXCIuLi9zY2VuZS9jb21wYXJpc29uc1wiO1xuaW1wb3J0IHsgaGFzQm91bmRUZXh0RWxlbWVudCwgaXNCb3VuZFRvQ29udGFpbmVyIH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZUNoZWNrc1wiO1xuXG5leHBvcnQgY29uc3QgU2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSAoe1xuICBhcHBTdGF0ZSxcbiAgZWxlbWVudHMsXG4gIHJlbmRlckFjdGlvbixcbiAgZWxlbWVudFR5cGUsXG59OiB7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbiAgZWxlbWVudHM6IHJlYWRvbmx5IEV4Y2FsaWRyYXdFbGVtZW50W107XG4gIHJlbmRlckFjdGlvbjogQWN0aW9uTWFuYWdlcltcInJlbmRlckFjdGlvblwiXTtcbiAgZWxlbWVudFR5cGU6IEV4Y2FsaWRyYXdFbGVtZW50W1widHlwZVwiXTtcbn0pID0+IHtcbiAgY29uc3QgdGFyZ2V0RWxlbWVudHMgPSBnZXRUYXJnZXRFbGVtZW50cyhcbiAgICBnZXROb25EZWxldGVkRWxlbWVudHMoZWxlbWVudHMpLFxuICAgIGFwcFN0YXRlLFxuICApO1xuXG4gIGxldCBpc1NpbmdsZUVsZW1lbnRCb3VuZENvbnRhaW5lciA9IGZhbHNlO1xuICBpZiAoXG4gICAgdGFyZ2V0RWxlbWVudHMubGVuZ3RoID09PSAyICYmXG4gICAgKGhhc0JvdW5kVGV4dEVsZW1lbnQodGFyZ2V0RWxlbWVudHNbMF0pIHx8XG4gICAgICBoYXNCb3VuZFRleHRFbGVtZW50KHRhcmdldEVsZW1lbnRzWzFdKSlcbiAgKSB7XG4gICAgaXNTaW5nbGVFbGVtZW50Qm91bmRDb250YWluZXIgPSB0cnVlO1xuICB9XG4gIGNvbnN0IGlzRWRpdGluZyA9IEJvb2xlYW4oYXBwU3RhdGUuZWRpdGluZ0VsZW1lbnQpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZUlzTW9iaWxlKCk7XG4gIGNvbnN0IGlzUlRMID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZShcImRpclwiKSA9PT0gXCJydGxcIjtcblxuICBjb25zdCBzaG93RmlsbEljb25zID1cbiAgICBoYXNCYWNrZ3JvdW5kKGVsZW1lbnRUeXBlKSB8fFxuICAgIHRhcmdldEVsZW1lbnRzLnNvbWUoXG4gICAgICAoZWxlbWVudCkgPT5cbiAgICAgICAgaGFzQmFja2dyb3VuZChlbGVtZW50LnR5cGUpICYmICFpc1RyYW5zcGFyZW50KGVsZW1lbnQuYmFja2dyb3VuZENvbG9yKSxcbiAgICApO1xuICBjb25zdCBzaG93Q2hhbmdlQmFja2dyb3VuZEljb25zID1cbiAgICBoYXNCYWNrZ3JvdW5kKGVsZW1lbnRUeXBlKSB8fFxuICAgIHRhcmdldEVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGhhc0JhY2tncm91bmQoZWxlbWVudC50eXBlKSk7XG5cbiAgbGV0IGNvbW1vblNlbGVjdGVkVHlwZTogc3RyaW5nIHwgbnVsbCA9IHRhcmdldEVsZW1lbnRzWzBdPy50eXBlIHx8IG51bGw7XG5cbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRhcmdldEVsZW1lbnRzKSB7XG4gICAgaWYgKGVsZW1lbnQudHlwZSAhPT0gY29tbW9uU2VsZWN0ZWRUeXBlKSB7XG4gICAgICBjb21tb25TZWxlY3RlZFR5cGUgPSBudWxsO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsQ29sdW1uXCI+XG4gICAgICB7KChoYXNTdHJva2VDb2xvcihlbGVtZW50VHlwZSkgJiZcbiAgICAgICAgZWxlbWVudFR5cGUgIT09IFwiaW1hZ2VcIiAmJlxuICAgICAgICBjb21tb25TZWxlY3RlZFR5cGUgIT09IFwiaW1hZ2VcIikgfHxcbiAgICAgICAgdGFyZ2V0RWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gaGFzU3Ryb2tlQ29sb3IoZWxlbWVudC50eXBlKSkpICYmXG4gICAgICAgIHJlbmRlckFjdGlvbihcImNoYW5nZVN0cm9rZUNvbG9yXCIpfVxuICAgICAge3Nob3dDaGFuZ2VCYWNrZ3JvdW5kSWNvbnMgJiYgcmVuZGVyQWN0aW9uKFwiY2hhbmdlQmFja2dyb3VuZENvbG9yXCIpfVxuICAgICAge3Nob3dGaWxsSWNvbnMgJiYgcmVuZGVyQWN0aW9uKFwiY2hhbmdlRmlsbFN0eWxlXCIpfVxuXG4gICAgICB7KGhhc1N0cm9rZVdpZHRoKGVsZW1lbnRUeXBlKSB8fFxuICAgICAgICB0YXJnZXRFbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBoYXNTdHJva2VXaWR0aChlbGVtZW50LnR5cGUpKSkgJiZcbiAgICAgICAgcmVuZGVyQWN0aW9uKFwiY2hhbmdlU3Ryb2tlV2lkdGhcIil9XG5cbiAgICAgIHsoZWxlbWVudFR5cGUgPT09IFwiZnJlZWRyYXdcIiB8fFxuICAgICAgICB0YXJnZXRFbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBlbGVtZW50LnR5cGUgPT09IFwiZnJlZWRyYXdcIikpICYmXG4gICAgICAgIHJlbmRlckFjdGlvbihcImNoYW5nZVN0cm9rZVNoYXBlXCIpfVxuXG4gICAgICB7KGhhc1N0cm9rZVN0eWxlKGVsZW1lbnRUeXBlKSB8fFxuICAgICAgICB0YXJnZXRFbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBoYXNTdHJva2VTdHlsZShlbGVtZW50LnR5cGUpKSkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJjaGFuZ2VTdHJva2VTdHlsZVwiKX1cbiAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiY2hhbmdlU2xvcHBpbmVzc1wiKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuXG4gICAgICB7KGNhbkNoYW5nZVNoYXJwbmVzcyhlbGVtZW50VHlwZSkgfHxcbiAgICAgICAgdGFyZ2V0RWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gY2FuQ2hhbmdlU2hhcnBuZXNzKGVsZW1lbnQudHlwZSkpKSAmJiAoXG4gICAgICAgIDw+e3JlbmRlckFjdGlvbihcImNoYW5nZVNoYXJwbmVzc1wiKX08Lz5cbiAgICAgICl9XG5cbiAgICAgIHsoaGFzVGV4dChlbGVtZW50VHlwZSkgfHxcbiAgICAgICAgdGFyZ2V0RWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gaGFzVGV4dChlbGVtZW50LnR5cGUpKSkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJjaGFuZ2VGb250U2l6ZVwiKX1cblxuICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJjaGFuZ2VGb250RmFtaWx5XCIpfVxuXG4gICAgICAgICAge3JlbmRlckFjdGlvbihcImNoYW5nZVRleHRBbGlnblwiKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuXG4gICAgICB7dGFyZ2V0RWxlbWVudHMuc29tZShcbiAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgaGFzQm91bmRUZXh0RWxlbWVudChlbGVtZW50KSB8fCBpc0JvdW5kVG9Db250YWluZXIoZWxlbWVudCksXG4gICAgICApICYmIHJlbmRlckFjdGlvbihcImNoYW5nZVZlcnRpY2FsQWxpZ25cIil9XG4gICAgICB7KGNhbkhhdmVBcnJvd2hlYWRzKGVsZW1lbnRUeXBlKSB8fFxuICAgICAgICB0YXJnZXRFbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBjYW5IYXZlQXJyb3doZWFkcyhlbGVtZW50LnR5cGUpKSkgJiYgKFxuICAgICAgICA8PntyZW5kZXJBY3Rpb24oXCJjaGFuZ2VBcnJvd2hlYWRcIil9PC8+XG4gICAgICApfVxuXG4gICAgICB7cmVuZGVyQWN0aW9uKFwiY2hhbmdlT3BhY2l0eVwiKX1cblxuICAgICAgPGZpZWxkc2V0PlxuICAgICAgICA8bGVnZW5kPnt0KFwibGFiZWxzLmxheWVyc1wiKX08L2xlZ2VuZD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b25MaXN0XCI+XG4gICAgICAgICAge3JlbmRlckFjdGlvbihcInNlbmRUb0JhY2tcIil9XG4gICAgICAgICAge3JlbmRlckFjdGlvbihcInNlbmRCYWNrd2FyZFwiKX1cbiAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYnJpbmdUb0Zyb250XCIpfVxuICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJicmluZ0ZvcndhcmRcIil9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9maWVsZHNldD5cblxuICAgICAge3RhcmdldEVsZW1lbnRzLmxlbmd0aCA+IDEgJiYgIWlzU2luZ2xlRWxlbWVudEJvdW5kQ29udGFpbmVyICYmIChcbiAgICAgICAgPGZpZWxkc2V0PlxuICAgICAgICAgIDxsZWdlbmQ+e3QoXCJsYWJlbHMuYWxpZ25cIil9PC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b25MaXN0XCI+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIHN3YXAgdGhpcyBvcmRlciBmb3IgUlRMIHNvIHRoZSBidXR0b24gcG9zaXRpb25zIGFsd2F5cyBtYXRjaCB0aGVpciBhY3Rpb25cbiAgICAgICAgICAgICAgLy8gKGkuZS4gdGhlIGxlZnRtb3N0IGJ1dHRvbiBhbGlnbnMgbGVmdClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtpc1JUTCA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYWxpZ25SaWdodFwiKX1cbiAgICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYWxpZ25Ib3Jpem9udGFsbHlDZW50ZXJlZFwiKX1cbiAgICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYWxpZ25MZWZ0XCIpfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduTGVmdFwiKX1cbiAgICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYWxpZ25Ib3Jpem9udGFsbHlDZW50ZXJlZFwiKX1cbiAgICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYWxpZ25SaWdodFwiKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3RhcmdldEVsZW1lbnRzLmxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICAgcmVuZGVyQWN0aW9uKFwiZGlzdHJpYnV0ZUhvcml6b250YWxseVwiKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaWNvblJvd1wiPlxuICAgICAgICAgICAgICB7cmVuZGVyQWN0aW9uKFwiYWxpZ25Ub3BcIil9XG4gICAgICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJhbGlnblZlcnRpY2FsbHlDZW50ZXJlZFwiKX1cbiAgICAgICAgICAgICAge3JlbmRlckFjdGlvbihcImFsaWduQm90dG9tXCIpfVxuICAgICAgICAgICAgICB7dGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMiAmJlxuICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbihcImRpc3RyaWJ1dGVWZXJ0aWNhbGx5XCIpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICApfVxuICAgICAgeyFpc0VkaXRpbmcgJiYgdGFyZ2V0RWxlbWVudHMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgICA8bGVnZW5kPnt0KFwibGFiZWxzLmFjdGlvbnNcIil9PC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b25MaXN0XCI+XG4gICAgICAgICAgICB7IWlzTW9iaWxlICYmIHJlbmRlckFjdGlvbihcImR1cGxpY2F0ZVNlbGVjdGlvblwiKX1cbiAgICAgICAgICAgIHshaXNNb2JpbGUgJiYgcmVuZGVyQWN0aW9uKFwiZGVsZXRlU2VsZWN0ZWRFbGVtZW50c1wiKX1cbiAgICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJncm91cFwiKX1cbiAgICAgICAgICAgIHtyZW5kZXJBY3Rpb24oXCJ1bmdyb3VwXCIpfVxuICAgICAgICAgICAge3RhcmdldEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiByZW5kZXJBY3Rpb24oXCJoeXBlcmxpbmtcIil9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IFNoYXBlc1N3aXRjaGVyID0gKHtcbiAgY2FudmFzLFxuICBlbGVtZW50VHlwZSxcbiAgc2V0QXBwU3RhdGUsXG4gIG9uSW1hZ2VBY3Rpb24sXG59OiB7XG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsO1xuICBlbGVtZW50VHlwZTogRXhjYWxpZHJhd0VsZW1lbnRbXCJ0eXBlXCJdO1xuICBzZXRBcHBTdGF0ZTogUmVhY3QuQ29tcG9uZW50PGFueSwgQXBwU3RhdGU+W1wic2V0U3RhdGVcIl07XG4gIG9uSW1hZ2VBY3Rpb246IChkYXRhOiB7IHBvaW50ZXJUeXBlOiBQb2ludGVyVHlwZSB8IG51bGwgfSkgPT4gdm9pZDtcbn0pID0+IChcbiAgPD5cbiAgICB7U0hBUEVTLm1hcCgoeyB2YWx1ZSwgaWNvbiwga2V5IH0sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IHQoYHRvb2xCYXIuJHt2YWx1ZX1gKTtcbiAgICAgIGNvbnN0IGxldHRlciA9IGtleSAmJiAodHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiA/IGtleSA6IGtleVswXSk7XG4gICAgICBjb25zdCBzaG9ydGN1dCA9IGxldHRlclxuICAgICAgICA/IGAke2NhcGl0YWxpemVTdHJpbmcobGV0dGVyKX0gJHt0KFwiaGVscERpYWxvZy5vclwiKX0gJHtpbmRleCArIDF9YFxuICAgICAgICA6IGAke2luZGV4ICsgMX1gO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRvb2xCdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9XCJTaGFwZVwiXG4gICAgICAgICAga2V5PXt2YWx1ZX1cbiAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgIGljb249e2ljb259XG4gICAgICAgICAgY2hlY2tlZD17ZWxlbWVudFR5cGUgPT09IHZhbHVlfVxuICAgICAgICAgIG5hbWU9XCJlZGl0b3ItY3VycmVudC1zaGFwZVwiXG4gICAgICAgICAgdGl0bGU9e2Ake2NhcGl0YWxpemVTdHJpbmcobGFiZWwpfSDigJQgJHtzaG9ydGN1dH1gfVxuICAgICAgICAgIGtleUJpbmRpbmdMYWJlbD17YCR7aW5kZXggKyAxfWB9XG4gICAgICAgICAgYXJpYS1sYWJlbD17Y2FwaXRhbGl6ZVN0cmluZyhsYWJlbCl9XG4gICAgICAgICAgYXJpYS1rZXlzaG9ydGN1dHM9e3Nob3J0Y3V0fVxuICAgICAgICAgIGRhdGEtdGVzdGlkPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KHsgcG9pbnRlclR5cGUgfSkgPT4ge1xuICAgICAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgICAgICBlbGVtZW50VHlwZTogdmFsdWUsXG4gICAgICAgICAgICAgIG11bHRpRWxlbWVudDogbnVsbCxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50SWRzOiB7fSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0Q3Vyc29yRm9yU2hhcGUoY2FudmFzLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uKHsgcG9pbnRlclR5cGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfSl9XG4gIDwvPlxuKTtcblxuZXhwb3J0IGNvbnN0IFpvb21BY3Rpb25zID0gKHtcbiAgcmVuZGVyQWN0aW9uLFxuICB6b29tLFxufToge1xuICByZW5kZXJBY3Rpb246IEFjdGlvbk1hbmFnZXJbXCJyZW5kZXJBY3Rpb25cIl07XG4gIHpvb206IFpvb207XG59KSA9PiAoXG4gIDxTdGFjay5Db2wgZ2FwPXsxfT5cbiAgICA8U3RhY2suUm93IGdhcD17MX0gYWxpZ249XCJjZW50ZXJcIj5cbiAgICAgIHtyZW5kZXJBY3Rpb24oXCJ6b29tT3V0XCIpfVxuICAgICAge3JlbmRlckFjdGlvbihcInpvb21JblwiKX1cbiAgICAgIHtyZW5kZXJBY3Rpb24oXCJyZXNldFpvb21cIil9XG4gICAgPC9TdGFjay5Sb3c+XG4gIDwvU3RhY2suQ29sPlxuKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Actions.tsx\n");
1595
1595
 
1596
1596
  /***/ }),
1597
1597
 
@@ -2955,7 +2955,7 @@ module.exports = JSON.parse('{"ar-SA":88,"bg-BG":61,"bn-BD":0,"ca-ES":95,"cs-CZ"
2955
2955
  /***/ ((module) => {
2956
2956
 
2957
2957
  "use strict";
2958
- module.exports = JSON.parse('{"name":"@dwelle/excalidraw","version":"0.3.47","main":"main.js","types":"types/packages/excalidraw/index.d.ts","files":["dist/*","types/*"],"publishConfig":{"access":"public"},"description":"Excalidraw as a React component","license":"MIT","keywords":[],"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all","not safari < 12","not kaios <= 2.5","not edge < 79","not chrome < 70","not and_uc < 13","not samsung < 10"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/core":"7.17.0","@babel/plugin-transform-arrow-functions":"7.16.7","@babel/plugin-transform-async-to-generator":"7.16.0","@babel/plugin-transform-runtime":"7.16.8","@babel/plugin-transform-typescript":"7.16.1","@babel/preset-env":"7.16.7","@babel/preset-react":"7.16.7","@babel/preset-typescript":"7.16.7","autoprefixer":"10.4.2","babel-loader":"8.2.3","babel-plugin-transform-class-properties":"6.24.1","cross-env":"7.0.3","css-loader":"6.6.0","mini-css-extract-plugin":"2.4.6","postcss-loader":"6.2.1","sass-loader":"12.4.0","terser-webpack-plugin":"5.3.1","ts-loader":"9.2.6","typescript":"4.5.4","webpack":"5.65.0","webpack-bundle-analyzer":"4.5.0","webpack-cli":"4.9.2","webpack-dev-server":"4.7.4","webpack-merge":"5.8.0"},"repository":"https://github.com/dwelle/excalidraw","homepage":"https://github.com/excalidraw/excalidraw/tree/master/src/packages/excalidraw","scripts":{"gen:types":"tsc --project ../../../tsconfig-types.json","build:umd":"rm -rf dist && cross-env NODE_ENV=production webpack --config webpack.prod.config.js && cross-env NODE_ENV=development webpack --config webpack.dev.config.js && yarn gen:types","build:umd:withAnalyzer":"cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js","pack":"yarn build:umd && yarn pack","start":"webpack serve --config webpack.dev-server.config.js","install:deps":"yarn install --frozen-lockfile && yarn --cwd ../../../","build:example":"EXAMPLE=true webpack --config webpack.dev-server.config.js"},"dependencies":{"dotenv":"10.0.0"}}');
2958
+ module.exports = JSON.parse('{"name":"@dwelle/excalidraw","version":"0.3.48","main":"main.js","types":"types/packages/excalidraw/index.d.ts","files":["dist/*","types/*"],"publishConfig":{"access":"public"},"description":"Excalidraw as a React component","license":"MIT","keywords":[],"browserslist":{"production":[">0.2%","not dead","not ie <= 11","not op_mini all","not safari < 12","not kaios <= 2.5","not edge < 79","not chrome < 70","not and_uc < 13","not samsung < 10"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/core":"7.17.0","@babel/plugin-transform-arrow-functions":"7.16.7","@babel/plugin-transform-async-to-generator":"7.16.0","@babel/plugin-transform-runtime":"7.16.8","@babel/plugin-transform-typescript":"7.16.1","@babel/preset-env":"7.16.7","@babel/preset-react":"7.16.7","@babel/preset-typescript":"7.16.7","autoprefixer":"10.4.2","babel-loader":"8.2.3","babel-plugin-transform-class-properties":"6.24.1","cross-env":"7.0.3","css-loader":"6.6.0","mini-css-extract-plugin":"2.4.6","postcss-loader":"6.2.1","sass-loader":"12.4.0","terser-webpack-plugin":"5.3.1","ts-loader":"9.2.6","typescript":"4.5.4","webpack":"5.65.0","webpack-bundle-analyzer":"4.5.0","webpack-cli":"4.9.2","webpack-dev-server":"4.7.4","webpack-merge":"5.8.0"},"repository":"https://github.com/dwelle/excalidraw","homepage":"https://github.com/excalidraw/excalidraw/tree/master/src/packages/excalidraw","scripts":{"gen:types":"tsc --project ../../../tsconfig-types.json","build:umd":"rm -rf dist && cross-env NODE_ENV=production webpack --config webpack.prod.config.js && cross-env NODE_ENV=development webpack --config webpack.dev.config.js && yarn gen:types","build:umd:withAnalyzer":"cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js","pack":"yarn build:umd && yarn pack","start":"webpack serve --config webpack.dev-server.config.js","install:deps":"yarn install --frozen-lockfile && yarn --cwd ../../../","build:example":"EXAMPLE=true webpack --config webpack.dev-server.config.js"},"dependencies":{"dotenv":"10.0.0"}}');
2959
2959
 
2960
2960
  /***/ })
2961
2961