easy-email-pro-theme 1.49.3 → 1.49.5

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/lib/index.js CHANGED
@@ -54,21 +54,21 @@ var __async = (__this, __arguments, generator) => {
54
54
  step((generator = generator.apply(__this, __arguments)).next());
55
55
  });
56
56
  };
57
- import { classnames, useEditorState, useEditorProps, useRefState, isDOMElement, useMergeTagsData, useEventCallback, useSelectedNode, ActiveTabKeys, toggleFormat, TextFormat, isFormatActive, validation, CustomEvent, getDynamicImagePlaceholder, EmailEditorProvider, EmailEditor, useForceUpdate, IframeComponent, HtmlStringToReactNodes, useEqualState } from "easy-email-pro-editor";
57
+ import { classnames, useEditorActions, useDragNodePath, useStandaloneElementEditing, useEditorProps, useRefState, isDOMElement, useMergeTagsData, useLockState, useEventCallback, useSelectedNodePath, useSelectedNode, useSetSelectedNodePath, useSetHoverNodePath, useUniversalElementEditing, useUniversalElementPath, useStandaloneElementPath, useStandaloneElement, useActiveTab, ActiveTabKeys, toggleFormat, TextFormat, useUniversalElement, isFormatActive, validation, CustomEvent, getDynamicImagePlaceholder, EmailEditorProvider, EmailEditor, useForceUpdate, IframeComponent, useEditorState, HtmlStringToReactNodes, useStandaloneElementSaveButton, useEqualState, useDragoverDirection } from "easy-email-pro-editor";
58
58
  import { useSlate, ReactEditor, useSlateStatic, useSelected } from "slate-react";
59
59
  import * as React$2 from "react";
60
60
  import React__default, { useRef, useState, useEffect, useCallback, useMemo, createContext, useContext, useLayoutEffect, memo, useReducer, cloneElement, forwardRef, Suspense, Component, createElement } from "react";
61
61
  import { NodeUtils, BlockManager, ElementType, EditorCore, t, ElementCategory, classnames as classnames$1, StandardType, PluginManager, EditorAuth, HtmlNodeAdapter, ConditionOperator, ConditionOperatorSymbol, EmailRenderProvider, components, I18nManager } from "easy-email-pro-core";
62
62
  import { cloneDeep, get, isEqual, set, omit as omit$2, merge as merge$1, debounce as debounce$2, isUndefined as isUndefined$1, uniqueId, isString as isString$1, isFunction as isFunction$4, isNumber as isNumber$1, upperFirst, sum, flatMap } from "lodash";
63
63
  import { Editor, Range, Node, Transforms, Path, Text as Text$2, createEditor } from "slate";
64
- import { createPortal, unstable_batchedUpdates } from "react-dom";
65
64
  import { nanoid } from "nanoid";
66
65
  import { Form, Input, Modal, Collapse, Space, Empty, Card, Grid, Button as Button$2, Drawer, Switch, Typography as Typography$1, Tabs, Radio, Divider as Divider$2, Alert, Popconfirm, Tooltip, Message, PageHeader, Spin, Layout as Layout$2, Popover, Select as Select$1, Slider, InputNumber, Tag, Link as Link$3, List as List$1, Skeleton, Trigger } from "@arco-design/web-react";
67
66
  import { IconPlus, IconDelete, IconEdit, IconLeft, IconCopy, IconUndo, IconRedo, IconMinus, IconEye, IconSubscribeAdd, IconClose, IconCheckCircleFill, IconDragArrow, IconLock, IconUnlock, IconQuestionCircle, IconLink, IconCloud, IconSend, IconDown } from "@arco-design/web-react/icon";
67
+ import { unstable_batchedUpdates, createPortal } from "react-dom";
68
68
  import mjml from "mjml-browser";
69
69
  import { renderToStaticMarkup } from "react-dom/server";
70
70
  import { HistoryEditor } from "slate-history";
71
- const styleText$g = `@font-face {
71
+ const styleText$h = `@font-face {
72
72
  font-family: "iconfont"; /* Project id 4003152 */
73
73
  src: url('data:font/woff2;base64,d09GMgABAAAAAC5kAAsAAAAAXRAAAC4RAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACSZAqBkGT0fAE2AiQDgywLgVgABCAFhGcHiG0bjU0145iluB1ASFF5spEIYeMQkAbMUZRPTjv7/z8nqDGGD+YBaFmbBUYiq6kVYcCgTZgkAIvWrbQJqELxcHjRfV6hKjU2tmrpqFTphOnCBDudNKk2oR6oed/xAzDZ8prLgmF4cL8MZ+s3ivCImO50ev8ZP7dnPSQpmlDRldXz7O79eHnBXqAABy0BSoAsoPcDv82eIxURPjaYlCihYhVKCEYCFqKbipFTZ2wGLhR0Fejcbnq1uQzd+jZX5cXWrm5dmKizwgUsS7GMwQekYesyPPHfrn3NnyxLKOAwg9MChSPKJtv+rMYgDVKX+MoGLAZTjTCOW9zvM2kf3JL2wQEpPSPofTpAqklsaw/cAIWcUBOG5nuX2oydHsys6Z1WCpE5BCAwwUKbDXDt6kf6le5Y0iy0bBCE0F4IgzR67d9RAJTAANSH3LvfiO2i6zO97kUgAA7bvY25Kx5r05wWeEYRBZilCQUBnAt47sWWNv/CgX151N0i7X9wXuijDtH3Vc1GSVdT6qphka+MWete1zyI/KJ4BgkGhHxxBPz/On1Xy78uYH4xW/HDWBgWwLFrty7jAyn2fc+yLdmBJ4cU56eWXbDkgqHgpBiXACaY9ALnK8knpwg0wTB2WjqOHcaW519uPAetecAtOUJtAZZJ9nblCbalgWIg8sn1+/Vn8s7H0E6A3gQorrlfjvFkk5tODBWkhBVtwaqqsjrRHiYkx7Rmi8oBD/bIZd8R9jhppJF1vmpKEATd/ed5jM2WfKY2ZpAeoe6JIIAeHp5MIktSgk3V1MYaoAoILyogPaKqykunAv46DVGzUNASRXeF6CkWi5OAGde5AD/5/etZhMEDBomC8EG9dNJiOPII3iX6UYLfzEJzDZjaABLAAS6WZSKtPucJgFJwkbynPmFolFvg+ylgAm3+CA0WXvAIJBQxCajJIZ9CiimnmVnMYwW/8Bsj7GIPZ7lyo2FkxWzRyA66ylNohvnWusBFDnnOozdfsvgXf3808CSu0TWG5t9maIP2eld1b/rA/tpQDtuGsbFknrW4d2lG8IgG05Y1hBhke4rmhZ+DnVy2a076+f1X4HZYuInG3XqoYXzPmfkcXBguTVe2rx2fgH/+Gh6wi+5OpDcKIYouadhLygqYAmUKNAwsljEdm6YKUvcqQNOqBNmUPJ3JQuQizFvKOZquoZonbJOWSZSwtaaCNTm+a1oE4ea885NgSeBAEV8T4pJQLVgR5kQGnGgFA4d00gTa4q4kSOiIv7wltyj2qIXawPVABRwdvMMAPJM9d0DAYRfIAkrRFDgGQkE/QsM1EAZmgLDQhXCQjfCwB2QJ+0BWkIEIEEfWkEZEcADZgBOIBC4g8kUFAbiBKOABsgUvEA0qEBNqEQvKkBdMAvHgBCgQOlAIFKJQuAKKgTYkgmIUuzAKBLNAYtgGksE6UDyUIDmsASlgCygBIkBqyEc5EATKhxpUCAlUVOilGJCHyqEcNUM1mgUFaF7RJCsAlegX6ES/wTDQCIwD7YILoD2QQmdhDOgq3ALdhjDQE5gGegEN6DUcAL2BQ6CfEAIyQy+GhT7MEm6AEaAZs4YYMKeCxQXQiLnCAjAenAETQhOWUdQlHxAFVgPzwGohF1sAA9giGAE2BD3YOVgBdrHoI7cBPmD3YRB7DFnYZ6jCvsAisO9wCewHLIMXgHZe4mAKvOiaIhYDmhzkXzR+5DmglVekWZK5DmjhbUOTibwBDPEe2Bwh1wBJPoabOWQbmk1kDNDNZwlMgO9ZUMePg1Pwn3yBLjbeC84N3AMEp01hfYHzSZhxD9ZJjcobFOjBBPePgtwUKTkOCR0TFYLzkWUdBMJ4aivSs6SHVJtyNc9WENQmPGgieX7WyTO/4FQMKNCZUvX0bEQ8HrVqr9witXe1J2rR0JxGNM0e0U7KfFiWVTiXHrj6mM0IbkKjYDk3cUrSWlX4tu00snPGc5KROt1aq8M3hfhzfYroqH0xwDlQ7R2FGUZGuk19Gx5AEbaAjr8qfswiiaKYyaYh6cV4+vYXT4lElEitmPMdEgiknQJjxmXXhFjuDIuIYxsI6lLodIuoNAI4kxjBO+b955E5nV3o/TKwhST0gxmHwfue4+7IoMAMPHZY9rDVdpw4Zm3vjvciHC4MHmGmzkAo2OVqbSJc9P6P0JGp2t1ul/18gjNiNXEhVeeSKIgSNc3lRScyAubZqWRBeftmdjWmpedqJk2YyuZF5r0176ZpkXlPwX2Fqvgifw1kcr3wEtfpdekmzPVGH3C4pn7GDLSsfYLIhq03m8oHRJYXIKePABZroEnijA655KEqvX0IMnnwxpTx7tH51Y/fr9c+gEw+tgifrx7tJ4RVfPMAQAv10TseASEhIwMfVkFluHWICxOX5X7hesBOoA72wlwOH3dn9QRa46KC0/vHKcKuW9U5iXYQvZs6tuF108YNzes3Nq5bn3BMEdjQyDkmnEIgI8L9czcVzO1BJyvA9UywBnNaS3DfOF5BMHpusaUnOQjV0QaZOLhNXlPD5avAMMcx0EAqa2ChGGUTfPn+r6pXx/X7l5VL91C8434/mLA0psXQWNGbHIA40RriQdSvI2dx35NAbzJu49CBs4WC9dBhFwmkYz6UA2PreDDbGqAQU0pgqdZApGyLC5wJoYHoSAgcCQP1uLJIUtkJRkIC3sWossCbg8LaM1wdx5xuO98BFwXorR0+pYsR4qj3LwOQb+1bSC9ooDuKjVx0VQ+vU7EWov9CLU6cKGuMcDTHMGXTTmxXt8yB3/qClgivOZ3PNcZQGS2V4DqZitG3Zpeo7AHLYGJ3697zxv3OTw0xjbWynLSdl+Z3hriwN2+RP8LQU66uZgOzYY0YBjBimqNcf5k4ugft+jMPcx0ZuKSyDgpBTYSlYvcY9y4FxuX7gTF+NbgsV8b4um/eU2HcLiDcjBh/lE60mIzH2kVeSEnCuj+CPxRFnxfDEKcgFQaHzUx6aGiEfUR9hoJJw4NXKNQZOe+2MzE/RwiVitd8fmjs+x/qx31yWgmfhSqFxXT3OUAmvgxEivfDQZFuyIPM4qOCuvRmKOsmADFQBWIjii5EihbEq5Uxqoc5OQA6SHCrs46LuN36yPE6FKl2W+thWMMMEzOGQgdrCpqFzKcHhUc0ZFuwnxqt2sSrNyddKtdA08llXwumYVjsEf6wmTw61LcsVlQ5QszoYekI+8wRTtCj5klcUMAhqyKC3uVaGEDqDr+mlPVYH49/cGTwoqUxhwwlesHUuaNEPSseFfoVX6NqqAe9mTG4JlMqjriBwxHM/8Mo1fsb/c81eL703///Va4u2nfVZdu9sxpcKOvz1Q5hILhB1VVBBZytbyymR1U9PSpIBHuZTyAI4CwDNsVXN+I8N1/jNr0EzN/82gvkOqNNK6olvaDk8b9b1j+CQj7UIfsES/2M76uzdqd6MKuag+ENzXWh1ZIABsdkU/2qCWXeblQYJ8Os+8NB6LxI8C5DcEgGJmxG3sE6+wi5++q6xLI6FVeunu6AO02kBFRZDp9AISKSKeo0ZSp1KV3DihhU3XKWrThjH9fny8jVS/PIw7e4BW/obGXiatfTGwXYH6P+qhhPiVy9VOGAo7wYYYQR46GD9KpFGX2ha15pu+75M9GPPMikgOtUKjB3sU9f7XycFvn4uXl8sDJnEPJO9H9ZPv09EMiLHUuzlWjc1LkkiViMHOlT2IR9xJouTip4MbgbJ0c+rTKc5WSomJuTp7qyXmfVt/YdNvE7sXO7yi3jlvt9GzuWI1avIIqXHoOL9wDIfeyNXMacrkLr0zhEHRskrsi1VH+o0MEpN3EhTjsdQqJU1ODjy7P/oU9jx9aMscYqe5UxNJLlfgizn9ZY2Rzh7q686y30mgnBmMzo5cbLw8tvLzcB5wkydoPNGME00xZ14ecpuaO0uOVBg73r7aQM//6E0tXqB1S+JmaF3NEXopjZxedwnd2owIdeGyzPDUZgsozyYZKr2nutVjJQk0xgGqtksHfXgrY1YqTzDoXKWMFiUMZEuT5uTP4RHGkflI/6Z/WTXPnQQdyujNiLdCSRE5uQQtNrUeWWdI6m6wYwmyP9JtmT/hTVjI4dRqxvsQP4166hAydOVC/kOAAqEC3zvJJg1TWInYrZPxUe/qSlX5oS1og21F2TnAzzpaGxx6ycN2D4sha23cIo+RoldycTXhqeW+gAhIvDjc4kB0hDuoGxJ4Zed83VHyS5LGvdmXtrYnoqIL3Z7K28K/9O7CH2rKVy58iwI/xevdHoGVNhThsjrvy7tryrKZpDQMD6tovwrWwReAxaX7jSL64fiTaqo50IxNAsxaIiD9FNAKylIcUomJUwA2E0rkWSG3yHgXqlOJbE4MvdAHK5cF9IGSvjxCk9CBTf1yhVw1BlMNEEW1aN7d2fMs42QdiT4yQyOszu0/GCqdgV0VU5aXHGQ7Z5owdZDNCdPnuG6TCGZL0AMsmjJhanyGDVfdVOHPf53jWKh3cJ0c0lnf5mvtFUAgGoehAbnYAal4WDNU8SXE6MjZdjE6/erIxmvgcNNNjC7dtA0GvNWkjMYGNiuuPe3Fso1t1pSk80Gu4PSbjWZbOJMDwozrCMhz+50fma7ysBFsKXcSnfbr7aTWWZLFpDAHR8jhMhRmORNzKYlbaNall+UEbORhO5KQJgnEGfJZY9c3IG8/wY1W7BUfJakziilnRB8tSiNpcfUgr6IBUptdCOmoJgVsD7PpI9zgxp9POMxLJV4Ybd2ZzH9ZPRRzGqDzeBXlav6ZDCMNIBSDMi7txxcRVXOZ63Lh8cQPTkG55r/YGv0S3SI4ajhTF7NpJRJ3NqkNV5f8UzOvv7cGPPTfZIRHzg/SqHAik8+uRNfRIp7x8aPTs83GOXwuVPg1nf+esirs9SKNKeUnrsCMnXLrkSHOhy0JmRP+EXhu6cUxy1vkLW0WZdgxZtdqutwepYhKWyeGKGE7E3OOK35d/+2tLYr/v1b+1EjWlUDMO/BILvt5E12SJFWKJcSQ29uY1jXVCnH1KAAcFSbXE6jY8uCPbzhuLonEzU8++2FJdc3fj44PsQJ4EfQ9UVgMznJevjfqYob/Uferu5sPjSugf73vgoiocCPP0OpUn95YYOV2vmXxgsP5DiDYh6s/Qa17g/4RqK+YlACrU4laZALdZVhfSLpSi3nOSVEfDEiHkwpgj8D4bjZLdGTtTK3EFHVakQFXlUSXaonAn8SrRFc/yPad2XB4VNESoTA2bHgf2Veb2mO3sPPKCjuXeljmrb5lE6FREU6R80IOFeP5YKJtGDaWzPdpMreS4zwZpoWaI5L5NbudjEiSOEXbKS5HjxcB9a1VCJA29w5W6LgihCwO74AsWfB3Cah6abQ9gF0mySd+Inx6WicaLvTBK6Ms5mtCBMg3RcRLWSWcfzlWiDVaehwTs1rThd0tINkpVsmy6tuhXLYBzeV0M78CccNzVWAXxZS6s0X+mF69Mq4Eg9245qsBmGt4llqi3zOKMNjLrBPhug7TPm8f4/oMd7c8HLOAd4SEiz5+WgFrX81FrWeXSXVtk2YwDGoYNTCapbR3KqewfFexNrc4l0TZWZfTGy8NajZm6mHUlBLxVvcNbpJPaP2igmaaPHL/5wFHkQcmX/Ga2jUEOcDjvTzKg5ixM9s1QsUhT9dW+goC/TGKGeu576XXu7NhDFozV8QJEuYS1jaei/UAjABl/7FmSb+J33w/2wVE5GGwN06MY+11MDzW5DBCiZYv+ZA+KvWxsSkJKACrkkHJX5SkNzbEqR3TTHf+mxEkB3GByGAsKw80K+VoSBDgbwYsUIP7S0t56z3vWYOc9jgDdrMm7qnsp2xyWiOwrDW+OlGivyeZ8yE25V/vJW3vaDj0HYzEniOqu51s3muI3nCoGiCFT/sSQvpJ+o33C991KoBzFekM6xM9a2ppHRpr4k21++0VPWla1Lwl1zIQmgE1vgrzjFi1dIaLwgc5iTSM4aSfX29CVjcaUS/EyLgwY3Kw1tj0+1GNct7JpvgBQwA8VfGT/MiMARXZwaVz2FngmULy0YRC+Z1ik1z3LN3h0qN1tr1/y4keppoHod5VlbdU9Ecm/EljBSLELUJnfF3Wbv3yzhcK0PQPKIgFckIxLgkCdJY47U6Cy/1WAfWViOHec/gprjfzwTDxBbGgjI9CPg2aO7jeBaL/Q2HS0fNW0Pm6rA9R7olCCdiuhugkdGD9kxJDqZAbQRoOttBa+OBhW9qH22vVWunFwJkxK70RXGCYHK3ORqWbDveDTDYBh+9gYnI2OUEVXkhYBvKYCOeVRMCvxC6Cf0qIAj9pUgqvXA1BguG+ccXOXCw/XrnZevmzeWtobSRxxa6qrFqo0yE+DWmPbxYDbOct+j0ebZqPB+7tgnTGivlxLQ4NTvbhp6mjh2BZb7cEorBo5l72Fow2FnMCczDCpMMOyYuZSOj6vbdjyxCKw1VAZR/G0vthyFPc8ohFjoFTp+4RwGJwkyJoV2DJ3AhviQoNSdvWr1ZnmCOI7uabfOYvuuJvkaDucLAUXJDS2y6KizdKmC9fEbCyBj6D8qCiZ6WBI6QjQ7KhqmCUNA/Dbjh4uLQFx4fokkwbzr/cCKElHPJYVYnE/ExGRCktXvWdHVGmK20iiYt7eMxV3yw2l06wYXstc9ot2MhMRyU/HYEDbpSrejtdHsVLGuFmeOVaWDHOtJcj3rOSwlyzA5mZvMUrH2TCIChIyQctkSlgG5fy9y0sCSsIwg96rh1WBxPBIvwCbeEa0hTsfcGcEciNjJVDeOYNFZOs55pLhRc+O69udfcbG82Dhe3N4Ns3xJPBKe5XDhPAdDt4H2TuJHDdIlXHIaqp8ERb1Roz4X55FbUy64wwhjzzs+YGjEKo3mOEOadTrM19WxriWz/Avp/zOHmScnnAZ8B66bS1bYPBlVk/cF98n37/Ecd22VaCPMvxFq7Z85ZK7BDVvWiwDk3XO87R4E7cf4TlfeX4tqCJ9yV0SkE/Vcky0FXrxmuFZ2bd21m+Prxk/dGTeM3ziVgzICPJhh21OCm4kPXG2lbf4v+L/NweulpNlFj773T7/is/AQa8spizKnlqq5BxkHryJrED5ZeXfwrpIsIMOLczcLCvZ343A8Fht/M+75o0BO8OHGvXgP7uObw5yIT0mfWA0de3CjuF2eNbmIFZd3ak99iuvHocf/4nLM7K0UrReN6TaINqxfoXihmK9W1Wr5CznbXvSnurAmWRC8Z9wuZey93bjL5qe0cbvU0VPGt4BTwHfZ/F9UsUf8vMs47enmeZDd+7EUu/o6/xX2N31u2vPE3xFE25ULxVppoVWTyEovq5KW10TVR8+11Q8P43dqbLuGh1rqKphKFTAQBoCp9jgCdZar1SQQRp72H8FMzVj4Xrpc4JyoJks6xW9KL3z7SrN60jvTndk7F5EPrGrmsZdZMw1tkZpu0XLC+BVT15XC3kl99SSEU5bM/t5mjTgh1g0NbzPhcTv+Jb79MWQevIGItf16KCvCrcE6XPhmooNxCMJ3RiKIel8RVChRO5Q2OcyBplIHdd7sxcd71m4VsI1AeNrGF9ef9ahnNgddPuWIvS6C/4g3KYswxSoM8v2lqkGzIi6jdLsuIFvhE131b1tHwWY5COxSsMsiIlpCmtwbSlsWN3Pa7KdlcJvs2tOLZvDaEa/TroVC7+7YN6ECf7KYO6cqy0huj0iYIU1Ib5XQDpXkiezsYfg15vWumJMXKJbWN0V146qTg2emqEKpubwkbkICN4m3S8jL5ybwknKpoZ+nagJnSauXkxtR6bVzVxU7PLdeLju0qVADER7rsM1YFz4dXUbpQZRID0U2UNpmQIa0UKYxILKQ2vWh65eUUuvs0K1QtJJRminNqNbZe/Y1TtJ7GG3u4YEHKrm9Mro0MrI0urLdppc5PHwWKcS+Chk12j+9bZnaDG6aT0BCULL9AXqWh1ISKYvKs/PFLxJ263TdwkX4txllxZx+xcwUWYsips1yviE//6PCETCTmYkFiRbPErWJK9ZTX2Jydx+TBJ4+nBXADe/GfmmJWnC0t+gpDn9eEhtPHssK8sI47frmgRI3vXxXsKEgDLVBlIL5cGenSPTKd5pFimhDsPQx5mfLbI5J2WGCHpWYAzx3zJp1i3NrlHckefeCw4fN2gl40kKTk2qT3lHJtcnJ0+ZTVttpkW6yzdq7d9faWJQhWrsboxR0Df50/uBg/unKOsqIbRFlFeCWz7T+64T1rOV4aKEU2ZooU3bjE5dNmbIsEWIY9Q+4Lr1jjerLTIMmp9nsQ4c0mt9///XXYw9/HX4/Ko3m0CE3nX33Yuri4sXOi8HcUj3a0DDqUeJxIBuyA2QSoibXkEvIeI6iTUduBA8h90j54F7j/iHFA++hfaj+wIdaDygr2/jwsxPiR/Gj+3le9tf1p9wjhP3aytFxAvmsAbF5gaGBn/9HHn9d9NiaTjy0TD9ijbjTxGGNO1fnhDkeXHswd833td9pa5gNmExu2NapvN424q03RswwlJ1l45oy2++EUgUzK0dAxb2u0quuw3X9dZVP57Een2sq3p9rSrVKDfiYt2SJu4TsgGS7z1JBsIxWpvXKYy9YwM7z0l4SMupbzmNrvS4RvqXy5pKIorCwooiSl4kS5cWXRLwstQDh21SIgaKiGBgGRE0xmJHnMBCxfNfMMWAMURk+DOoQQ7WO20AxUJz9/Q3xBpOpVZNHyrJX25Oqq2ur0j6Us2andHozhqlS6pB0yEfqM+w5YoxE/hC8Y7thjrjgu2sZ/7tfxAbD9hm0za7NLhMuza6bafPm9Xgy37p3RXe5v2U6HW+aWG8IIwldhKSw6GBNDcBx41N0TB2Fz4kYo8/0PFgzb5Q+OgMOes6kj0EIJewXrwcpXmMg5YGXulOst73B/hd+4XtGQS4vsDd5m9bo011eAnujt/EtvSbtducH95+3W58+llIisO1n99sKruxY+vqqmSEifbS1lfbQ0drhA621haZFWwGtZZsPDtaODxe20goevRbCjghCOc2cfa5Yp2gnrGvSCSKd5kl8QPS0qUL5ovd9eIdQvi7Bxm4jetLE+57TwiFwmiMarGaEsdXX/3L4YDlDRCjyvklSFg+xGqcLz3dlhW+um8YjhjyxBMsnwR5RhSltiS1doyKR+sfBOwnOhISeaM7gMmcJd2BG7+1427cJiiVpl/vW9FrHFoO5cx0tPRdZcXOCu7LhkTR3orQeV9+XbNYzRz+iBK6EEW4+7aygGrj6zI+RTDWEM+IlDDrjPtekT3BdggSjwyRpktZA4NKv6RwQbsuLZQB9NR0YsXSvx7OfAd8B4oOjQ3+0Xfxy6Y92IaN2f774nv6aMaBXrPNmgDSyYXnGdTvSiH6LjqiAq7pUSXZDLrSuRwwQPc0drcKko9Xo23fRKnQWugR9N0C1Y9QYFUxSkJ70TUZPaiQnaQwo0cWI3H54t6MrowKiAyDweLuJdnqQGkodPE1TMmofy5216obdWbtgXtNgKrdyt9JZP/Y0mhpXABzb9sc3efIBzxTPA8nyx4sw9pL5EvijvxFtqQMn+Yd9Dp/l99LoEMbwZ3qp2CNslZd0f3wU/Dp4+6sYX4b+M3QarxyW0cjK8dKcE3LKaNwvWeN1jvAtya4rCNEEB2tCCu4mypQmOJvfvX2nhCZlZ2Yn7969ZMdXAYN36N7bou3OmZk1djcI/v8e1Bie5wSwx/VglxGE33RxfTz4NYi7icjQBtq+r97faAf/HELgePpvRP8RxD/5zecb/+z67XSAX5qesz0MNIGHVLbv2aPZjyad3ac045oR+beVar1y2X197Fwv7YVARo32C2m9LhC/b2lJ8oEFCw4kqxzWrSOYiRmzSUD9me7cJe1ylvj97S70F4xuesvz3aE78+mThR+u9+vUxtgf44pTix/9KpiVa6aGhk5tFHKyUfkAOZMPu+Dnjp0UMW8y77Mxry2CWIbfpRawa+cu8DBa93yfXE/oN9+Oo9Cb/QqVD07eO2eieW4h2VKN987cOWmg0alG8y3HZcO3yX1+Zdgdk4S6LS7aZe/5tRu5bhC3s9jN6HbKzeD2wK3f+hSedexOkj0eGmBha4Msjut36sEpVE6SeLfNX+J3T6fmSU4QT0hOHwyJ3UiSkBaSxCQbDgvh83RB/Kn4ipMkievgg0KAHkISw3jb79zQ2XkthhZ+q6EVjqpOKfTYFKT4mAkw5SXbVAEsUUeMeruuguHzyevd9rtG+K/AuaKYWg7Gu08KsSkK/SlqijIgQCPMw1SA6Vjxar80X9+0At/0NEGhkMsLfNPSfB2iCVaYJguV5o2ld4qH7p4sxCCLNo8aI0kzr1iNWF1pszrtqhzbXEwuHt1sOk5u3tUMXpZuHpORZQ9RHE/MKwuB0u7xceAjPBg/TeJb8Mk52c3JPNI7LhwuWuUGKwJlv2bkfa77HFXhl5D9DynFVe4ibVcl/+f8UvjS+b/K7DBVME8j0MID54ctJ+/NHhVwzVNbTft3jVQPFt0D1qXUvPon1b+4/1Jtn8SCI8C61zDYPvKrJYORxzVP39R1b+Jhy+80cH/XUZb/oXy9+fND+aF81AhWvtfFt0J+wXxWHucLEjJq8gapxnY5mOebWYWjuDAnk2ee7Vs3nvfE9XfHPuvl11/tSy4LaC4PjO67Oj0KUvfR8fSVK+ha56cuCsXRLc5a+sqVRVkA3ZK+YqWKIqfIoknklZWLmDJETlEd6aOaVBQuwAqt0y5swVDtvDeYzDhBT6rBJ5O7HK1Cr+aKxE45u772AGLoIrmsbv25lBqsIZGtSJ1IxYYxWwdMozkYqMCmfFZgFIGt/Qw8A88IMwyi7kYqXZpdlITe1R59rdZdbAm7i/Dnfo/9f0L0kjVDqoXqq3arlqWvfHvPLpAtLbQSdknFwifBeUFBeVVCTlYrd7CMPuQsc/78hYgPGJgpGNyIK8s/088v0591eQSDczvq0scfcB8YHCzl3ddxp3FMJp9pbvLi1m+1dSNuEvd+oa3niNuRypUnnPSLnE+s/NPgLc9MoSUmzhAYcAmyiotXHQjmdCNP9vRE7/wQoOri1HV67zqtJlFqbyhkldcZ/e37Td7TXCWaRojXuKoMKtcN4tQcpqarkm9wXemyxbX86BbZFClkqFrdfwUOOy6OzWnRBVFzjMXMTfB0mXlEx+ZmQU+pIzHPsbtMUNoDC3YzjvEYOgbvGOOBck/KHjhTnHUcvdej44uvzpAkblHz+Uk1+KH0IqqKqmcaK7P99Yr9OR8WZLVEdEQEUcu8dpCUpEByuLd1nsCN4IO3EzyHXzB+BHeicxtJSQ4cjyfCJ/vfbIj8NWS5g5mtdfzpoCDWOuD6Sf24BBHoQKxVOPx0rHUwz72aSKw9pMo6cyi+36YfH2oxil/ORGg4Lr8tLtwefwDh2bx3r7Y6YN2cbAxhNf5Jg299GAHtOS2JXe9e76lzxipv0K4pSGLSMpKEpNhVLCOJibstLBRy70ukJ3olMpClJ7JLuRv0GhutfdnUKDV2Hb0uyeOJOSvEAjoHkmfi5C9tA6SBMn41rh/Hsh+L8bicEHSGBAtCgB2U2fRjl7LYoJVkahdWUvDaZ8FW52p7XjBxG2w24Jjn8RmC40rnRre00nocjO+GzprWbxqb18fJ8E9yEKHwURAVuO1NYlSiKIUoEORG5R519L2/EREqQkTWcGBThuLsavaTOYozhYjR0Iwau/g+mvjO/J3vuSXH9iCNyFMuAGmWCCIJaQGCAKQBCHoipYPOuzviV4ZtbeoslxOM/gOuacEhr1Z83bzRxqVYUu9xxcHg3U3/rXbulgIOYY3L3Pw4d8YZd8caycfPHtYkW5eCpBPMYrqSbHfFFsM5hrfr9x6zR2bIj/Mhp1Pu1h/VH+ll4ukv2wxEDcT/gg+EqI9YklSLNNObEXFmsiiz707fLxhIp+/CK0lhYvs1Mu+E5Kas4ukbbp3mCNAlmCJsM9bCxsEmJzZifLZPeoKecUkaXB0f0Wb+Zw1Gjc5AqzEpdRufPL8Yz0ln3vrrXkNOc1x+BGoGuhrTjLUkFmVEvZ3LTFMv8CpOCqqRihbsmUI9pwLM8tYkrsJH/rxEyH6a8lQS19Ag7h3IIMm1DNm8RK5C4ZPETW9Qp6ghtOs3MkqCCuWafGbA+2q3RSyuQhJdJYoM1r1L4PBkfIU6nSNli3vUGViLIK02Te+20Q/7cmPKQ2OmOuMioosrI0Sm3PCpRxN9eLJMgTzFG4THe7NX24iztmcPZ6+wyczalA1ek34zq2YGVUqqJJWV/1T9c41mJy5sKCFmFRMblfz4w9n5c/KB12GJM1A/vFXicVicgeZJM9nA4z4/IyUbb2WiPgXAiQOOjmXlL7zPed8uL+v538KPet/qNW7d+rKd3ulWoGG2uXYe2bPX2Fv7ivSztm4ZtUtEEsoVDomk/0q2bJVKGabulfTyMqPQZpzCyiti5VLm9xlX/UGvaDX1zT9rm1Rg4IbtGAErT4Jy1HvmsoryWAVaaTgJKJ3x5yxHLM8hwn8TaqmyEb1QVLxM2YA6/JL3OWBXYVY5vOn1PVKvewtl3veq4UYH2M+47/XQz7T7YEeFcePR+e2ihehGWVHsQhSYH616Gvp/tGHj68L95b55EobWcwFCsj6OMeTDAIb3MKOLvhhjAWY9w2fIKuCIniahdYm6aqQMa1IXTUUFmpIWx3cKwTsJE25jbnpNPgTbmJVPV5p79RgVes/KPWjV/2hVxEBQpupL0OTIF6PEM88pv+g09PClHvm9Y4Dc4DWnEbife4oBvrlgYx287Pm1vFLZ8hXSUl4t397LIdZFIRXHF/I8BFgVVuDJK5TJJHL/2DCEPA6Jl4oVLudsLV2xXNYul0lkludM0veRSdT8RJIHxYSiE73cDO7BVX3MEG1Yy0uh60KbCX0pKkxt8laZrHWJUAbITfWm0qwAlb9QJcy6CISUyn8PBv3u5pUW5y0urGqWN8tkLQsDRYB8Zd1KXZYw099fKVSfAwLqmbOEELXYLoiyLLQp17HKMbfJnyyIpCQpSCoSgyT90DHID1yiEed/IAEpoajyyoz4Clb5godtZ8X+1N7e1P3XExn1+Ou3j+DwBCMPTyiTLV+KPo9ZhQ47x7ErO+34b7YdB68tehXmr3XYjNnxBio+kSFdvrYUUWBR0eNOKCvq4CPskZPKgTlTiMjwvL+nrbPAPprvbeVkJz0DOAV5Temc75k80ur8kNygwLxgbU2MezpN6p/OEQXK0jswle/eVWI60k/BEflT6Ls0piZYG5iXG5QfUiWdo7y/qtRP5RKdUuivLhGCJABilr6V2Aht0jiRItVmE9S0o3xxKcMpV8dPIwh+VJe8mNC88DiUS+3bR50D+/qo6hnEB7Bcj+9xHCHwvDHHI45ZT7OK9km6GpNxNVxAmGY9CTdiaqfZa+3rFUoho664U2Cvsa9RKAMFijVrCK8roGgoNSL2BFnEWrQu3jLFcigekcxyW2csizzBrhFpKIWU1BMRUREdHldYNdEaZJ+4Li3JcttszToZPtly3Ymhw60zf2ZGRUZBxK8tZ6mSQAlV6FeE8wwSB3rKhyJEiJc8LxGRM1QJUDceyz42JyuWgPDKVGubyXpW9EUUVt63LF00u76u7d30YpAvH1WUw1Iz581jqlk5J4WM+pbVzBzWSeKTAcHDT5XK6awaVqNNk834vPCy8GLcDFxT3u3clKyk6W4N7s8EWoUmPqAsqKJVlzy6NEYsznHNcs0jaAlryn3T+WkYDVYr3xofLY3Mccx1GmUmhClCORneysL0Zhv5mb3fPN/cfdL5yRveK9nT/Yqfsb9Run5uv0W4c9JTmefD/M9by87u7RVK34K+GSAyj++fbl66PHpo9NWruKyz47yAWfz+2iNPa51588oiF7ExHh1GqrFL//OH+XXb9ROJfvyMeXyppj8CDFPg/enbnZmfx/ia+Ve6G4Btn5OkANtpe4XIjjoNRfAjq5Ht79321tDnwxnBUi/V+B8pdBPWesURPe2dtUB1XeOIVdTobBQ9PjnKEjudl4wNPs7cV3qqzMNCb9dbjy9UJKXV9AVT7EQE09uWRx+TJsz1fRtmO6vdjD7ZyMtU5avrJrDf5/Hfn3mfH8D1a2KHRd6c3s2xtekD/IvzU5axzwteF079HIRH6fIaqZG9U3hvkpktP40iNAOATSybh6vF9mlm7CKtRxVztU3V9KbuM04WhSrlgImqZEr6Ywfm+XYWr8mG55JwJwD4G+/ue35Omoo0Bs31ZbQP9rrAifiPjnBw3lsf9pEmo+JQfMRLK/M1eotsYM+aVq1Ml2y/n63G9bio5elDcRFef42dcug0eKW2j+rzWmdraXrDfR4f7EHo6y8T1AAQYA8C4P+sDTv+bZOU2SlfLw3OzkdT7vS1mOK2dVi2tlzfp936bPO7eZaIWuBq/s0jl0p9CwD4o22T6+of0Zk/z14LW2H1mkOJB08uQd3pv4pMzH8A99iauP2hJQThyMODNJbYDdbeZ76A3xQs6wD/MUSEdWtC11iPObirSZ0kPG02yzNsN/8nIdL1a9cob6+202UBu/Ikt3V8cErv+lj780Q4AHf5XISOExCMzgT8j5KBpN/11VPaRAA+p14tcsKhLXLBoyvuiM8iDwLhIi+8qEVBXBsrD7H1AcWiOoBKn7tFFsi+Fk1hYz+gqMg3oBH5WYTh4A+wiPwvsqLOWDMCduAyXqwgQxjn45i8lEUJk3f3B+LGpFX5P9CWMDI+7O6Lh3xHgbYxQzvER7NlXFTy+C14cGCWsao8wdtuNauf7u4WquWdl3zyWUGGMM5HscvkpSzNLf/j+4G4Mamm8kdoY8S7++PD7l5D+c6L1piWyNshPpotTCyKg/P47VqAH4oyVnqyJ3jbrQ2c+ukuarbo8l3/en7HwrfdcYZzk95PkSuUKqpq6n6VuGrUpFmL/vzi/wJAhAllXEiljXU+RHGSZnlRVnXTdv0wTvOybvtxXvfzfn9snFgilcXLFQmJSckpqWnpGZnKvxz68GVl5+TmafK1BYVTpxUVl+hKy8orKjWHT2aGRkwNDG8Ikwdzu02lQW1SeZ62+ib3nXjhLZeJsdjb4rfRFFf7GMCwduiRs23vKGxwPq0zmhldyhRxGVJGuaBbGSqFkErsOJX9w7VXqZqBRgaXSfd9TqqiPow0Sr4ng/olsUF7Ck9bs0EIE+2hV80U5teWsHlJ8m4BwkB6zGJcZF69mfy+O6QA6f+pl4BLL1uxIM/lwpPK1sDnM8V+FjPJzks9npvUc/tiV2A8keEkpR9bZmjZbc5Tjm5+/60vW56hw7NSrdCzrbp2jS763upWcHVO5J3bVntdeWtT+7eR4iankoHLjtonf/RVLijF8yCtSugwk7rVMptwqwytkh+l95K8Fw32TNjEJ2KX5YDrO2OqZmYp5pqRdsjylNz8wnWcw7Sie3WMdGmdcxxxy+VTKofU0sxwWawiU4LJdncJCP286UJZiAc8J8YQ0PYmtUdIJnpFnOI2id+8HNajGPT6mk73KAOnZpOwlG1820zTHra2bsX1sgOmtnEXu2fh0Cdravrrd12zTgvlxMfOszT0WxnLAxrAyCjWMR2hrlJEvwGhLw3LZlcb3WsU2xDSuhvq+igXpwhy1SbWnY+oY4kyUAiK1oYVtCF7L+ZYc38uAhnN1PCCVOX5r0kdjeMCtdUka9vaulE4Xl23eJ/BAy2A9AQAAAA=') format('woff2'),
74
74
  url('data:font/woff;base64,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') format('woff'),
@@ -512,7 +512,7 @@ const styleText$g = `@font-face {
512
512
  }
513
513
 
514
514
  `;
515
- const RetroStyleText = '[data-slate-block=page] {\n min-height: 300px;\n}\n\n[data-slate-category=navbar]::after,\n[data-slate-category=social]::after {\n content: "";\n left: 0;\n top: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 1;\n cursor: default;\n}\n\n[data-slate-hover=true] {\n z-index: 4;\n}\n\n[data-slate-focus=true] {\n z-index: 3;\n}\n\n[data-slate-selected=true] {\n z-index: 3;\n}\n\n[data-slate-hover=true] .element-tools-container {\n z-index: 4;\n}\n\n[data-slate-selected=true] .element-tools-container {\n z-index: 4;\n}\n\n[data-slate-void=true] [data-slate-node=element][data-slate-block=button]:hover,\n[data-slate-void=true] [data-slate-node=element][data-slate-block=text]:hover {\n outline: 2px solid var(--hover-color);\n}\n\n.text-mergetag {\n outline: 1px solid rgb(78, 89, 105);\n outline-offset: 1px;\n padding: 0 2px;\n border-radius: 2px;\n cursor: pointer;\n transition: all 0.1s linear;\n border: none;\n font-weight: inherit;\n outline-color: #00a0ac;\n color: inherit;\n background-color: #ebf9fc;\n max-width: 10em;\n font-style: inherit;\n text-decoration-line: inherit;\n position: relative;\n}\n\n.text-mergetag [data-slate-string=true] {\n font-size: 0px;\n}\n\nbody .element-tools-container {\n outline: 2px solid var(--hover-color);\n z-index: 1;\n}\n\nbody .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\n\nbody .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\n\n[data-layer-dragging=true] .element-tools-container {\n opacity: 0;\n}\n\n[data-is-dragging=true] .element-tools-container {\n opacity: 0;\n}\n\n#dragging-placeholder .element-tools-container {\n opacity: 1 !important;\n}\n\n[data-slate-type=placeholder] {\n min-height: 64px;\n position: relative;\n background-color: rgba(242, 244, 245, 0.64);\n outline: rgb(43, 152, 211) dashed 1px;\n outline-offset: -1px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 400;\n line-height: 1.3;\n color: rgb(48, 59, 67);\n margin: 0 20px;\n}\n\n[data-slate-type=placeholder] .element-delete {\n border-radius: 2px;\n padding: 0px;\n cursor: pointer;\n height: 28px;\n width: 28px;\n background-color: rgb(223, 227, 230);\n color: rgb(96, 106, 114);\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 10px;\n top: 10px;\n opacity: 0.8;\n}\n\n[data-slate-type=placeholder] .element-delete:hover {\n background-color: rgb(180, 187, 195);\n opacity: 1;\n}\n\n[data-slate-type=placeholder] .element-delete svg {\n width: 20px;\n height: 20px;\n}\n\n[data-slate-universal-editing=true] {\n z-index: 2;\n}\n\n.standalone-element-mask,\n.universal-element-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 10;\n}\n\n.unset-element-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n[data-slate-universal-editing=true] .universal-element-mask,\n[data-slate-standalone-editing=true] .standalone-element-mask {\n display: none;\n}\n\n[data-slate-universal-editing=true] .universal-element-editing-mask,\n[data-slate-standalone-editing=true] .standalone-element-editing-mask {\n z-index: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0px;\n}\n\n[data-slate-universal-editing=true] .universal-element-editing-mask::before,\n[data-slate-standalone-editing=true] .standalone-element-editing-mask::before {\n content: " ";\n width: 10000px;\n height: 10000px;\n position: fixed;\n left: 0;\n top: 0;\n transform: translate(-50%, -50%);\n}\n\n[data-slate-universal-editing=true] .universal-element-editing-mask::after,\n[data-slate-standalone-editing=true] .standalone-element-editing-mask::after {\n position: absolute;\n content: " ";\n width: 100%;\n height: 100%;\n inset: 0px;\n pointer-events: none;\n outline: 9999px solid rgba(255, 255, 255, 0.6);\n}';
515
+ const RetroStyleText = '[data-slate-block=page] {\n min-height: 300px;\n}\n\n[data-slate-category=navbar]::after,\n[data-slate-category=social]::after {\n content: "";\n left: 0;\n top: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 1;\n cursor: default;\n}\n\n[data-slate-hover=true] {\n z-index: 4;\n}\n\n[data-slate-focus=true] {\n z-index: 3;\n}\n\n[data-slate-selected=true] {\n z-index: 3;\n}\n\n[data-slate-hover=true] .element-tools-container {\n z-index: 4;\n}\n\n[data-slate-selected=true] .element-tools-container {\n z-index: 4;\n}\n\n[data-slate-void=true] [data-slate-node=element][data-slate-block=button]:hover,\n[data-slate-void=true] [data-slate-node=element][data-slate-block=text]:hover {\n outline: 2px solid var(--hover-color);\n}\n\n.text-mergetag {\n outline: 1px solid rgb(78, 89, 105);\n outline-offset: 1px;\n padding: 0 2px;\n border-radius: 2px;\n cursor: pointer;\n transition: all 0.1s linear;\n border: none;\n font-weight: inherit;\n outline-color: #00a0ac;\n color: inherit;\n background-color: #ebf9fc;\n max-width: 10em;\n font-style: inherit;\n text-decoration-line: inherit;\n position: relative;\n}\n\n.text-mergetag [data-slate-string=true] {\n font-size: 0px;\n}\n\nbody .element-tools-container {\n outline: 2px solid var(--hover-color);\n z-index: 1;\n}\n\nbody .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\n\nbody .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\n\n[data-layer-dragging=true] .element-tools-container {\n opacity: 0;\n}\n\n[data-is-dragging=true] .element-tools-container {\n opacity: 0;\n}\n\n#dragging-placeholder .element-tools-container {\n opacity: 1 !important;\n}\n\n[data-slate-type=placeholder] {\n min-height: 64px;\n position: relative;\n background-color: rgba(242, 244, 245, 0.64);\n outline: rgb(43, 152, 211) dashed 1px;\n outline-offset: -1px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 400;\n line-height: 1.3;\n color: rgb(48, 59, 67);\n margin: 0 20px;\n}\n\n[data-slate-type=placeholder] .element-delete {\n border-radius: 2px;\n padding: 0px;\n cursor: pointer;\n height: 28px;\n width: 28px;\n background-color: rgb(223, 227, 230);\n color: rgb(96, 106, 114);\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 10px;\n top: 10px;\n opacity: 0.8;\n}\n\n[data-slate-type=placeholder] .element-delete:hover {\n background-color: rgb(180, 187, 195);\n opacity: 1;\n}\n\n[data-slate-type=placeholder] .element-delete svg {\n width: 20px;\n height: 20px;\n}\n\n[data-slate-universal-editing=true] {\n z-index: 2;\n}\n\n.standalone-element-mask,\n.universal-element-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 10;\n}\n\n.unset-element-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n[data-slate-universal-editing=true] .universal-element-mask,\n[data-slate-standalone-editing=true] .standalone-element-mask {\n display: none;\n}\n\n[data-slate-universal-editing=true] .universal-element-editing-mask,\n[data-slate-standalone-editing=true] .standalone-element-editing-mask {\n z-index: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0px;\n}\n\n[data-slate-universal-editing=true] .universal-element-editing-mask::before,\n[data-slate-standalone-editing=true] .standalone-element-editing-mask::before {\n content: " ";\n width: 10000px;\n height: 10000px;\n position: fixed;\n left: 0;\n top: 0;\n transform: translate(-50%, -50%);\n z-index: 10;\n}\n\n[data-slate-universal-editing=true] .universal-element-editing-mask::after,\n[data-slate-standalone-editing=true] .standalone-element-editing-mask::after {\n position: absolute;\n content: " ";\n width: 100%;\n height: 100%;\n inset: 0px;\n pointer-events: none;\n outline: 9999px solid rgba(255, 255, 255, 0.6);\n}';
516
516
  const withTheme$1 = (editor) => {
517
517
  const { insertBreak, normalizeNode, deleteBackward, apply: apply2, insertSoftBreak } = editor;
518
518
  editor.insertBreak = (...args) => {
@@ -677,7 +677,7 @@ const withTheme$1 = (editor) => {
677
677
  };
678
678
  return editor;
679
679
  };
680
- const styleText$f = "[data-slate-hide-cursor=true][data-slate-hover=true] {\n cursor: none;\n}\n[data-slate-hide-cursor=true][data-slate-hover=true]:hover {\n outline: none !important;\n}\n\n[data-slate-hide-cursor=true] [data-slate-hover=true] .element-tools-container {\n opacity: 0;\n}\n\n.element-tools-container {\n position: absolute;\n font-size: 14px;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n outline-offset: -2px;\n outline: 2px solid transparent;\n outline-offset: -2px;\n pointer-events: none;\n}\n\n.element-tools {\n pointer-events: auto;\n position: absolute;\n top: 0;\n left: 0;\n transform: translate(0, -100%);\n display: flex;\n align-items: center;\n font-size: 14px !important;\n height: 22px;\n padding: 1px 5px;\n line-height: 22px;\n font-weight: normal !important;\n font-style: normal !important;\n}\n.element-tools .element-tools-item {\n font-size: 12px !important;\n line-height: 20px;\n width: 25px;\n display: flex;\n pointer-events: auto;\n cursor: pointer;\n justify-content: center;\n}\n\n.element-tools-move-handle {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(50%, -50%);\n width: 35px;\n height: 35px;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: grab;\n}\n\n.element-tools-bottom {\n top: 100%;\n transform: translate(0, 0);\n}\n\n.element-drag-button {\n pointer-events: auto;\n position: absolute;\n z-index: 4;\n top: 50%;\n right: 0%;\n color: #fff;\n color: rgb(255, 255, 255);\n height: 28px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate(50%, -50%);\n border-radius: 50%;\n cursor: grab;\n}\n.element-drag-button .iconfont {\n cursor: grab !important;\n}";
680
+ const styleText$g = "[data-slate-hide-cursor=true][data-slate-hover=true] {\n cursor: none;\n}\n[data-slate-hide-cursor=true][data-slate-hover=true]:hover {\n outline: none !important;\n}\n\n[data-slate-hide-cursor=true] [data-slate-hover=true] .element-tools-container {\n opacity: 0;\n}\n\n.element-tools-container {\n position: absolute;\n font-size: 14px;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n outline-offset: -2px;\n outline: 2px solid transparent;\n outline-offset: -2px;\n pointer-events: none;\n}\n\n.element-tools {\n pointer-events: auto;\n position: absolute;\n top: 0;\n left: 0;\n transform: translate(0, -100%);\n display: flex;\n align-items: center;\n font-size: 14px !important;\n height: 22px;\n padding: 1px 5px;\n line-height: 22px;\n font-weight: normal !important;\n font-style: normal !important;\n}\n.element-tools .element-tools-item {\n font-size: 12px !important;\n line-height: 20px;\n width: 25px;\n display: flex;\n pointer-events: auto;\n cursor: pointer;\n justify-content: center;\n}\n\n.element-tools-move-handle {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(50%, -50%);\n width: 35px;\n height: 35px;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: grab;\n}\n\n.element-tools-bottom {\n top: 100%;\n transform: translate(0, 0);\n}\n\n.element-drag-button {\n pointer-events: auto;\n position: absolute;\n z-index: 4;\n top: 50%;\n right: 0%;\n color: #fff;\n color: rgb(255, 255, 255);\n height: 28px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate(50%, -50%);\n border-radius: 50%;\n cursor: grab;\n}\n.element-drag-button .iconfont {\n cursor: grab !important;\n}";
681
681
  function IconFont(props) {
682
682
  var _a;
683
683
  return /* @__PURE__ */ React__default.createElement(
@@ -722,10 +722,11 @@ const DraggingProvider = ({
722
722
  setDragNodePath,
723
723
  setDragoverNodePath,
724
724
  setHoverNodePath,
725
- dragNodePath,
726
725
  setSelectedNodePath,
727
- standaloneElementEditing
728
- } = useEditorState();
726
+ setDragoverDirection
727
+ } = useEditorActions();
728
+ const dragNodePath = useDragNodePath();
729
+ const standaloneElementEditing = useStandaloneElementEditing();
729
730
  const editorProps = useEditorProps();
730
731
  const quantityLimitCheck = useRefState(editorProps.quantityLimitCheck);
731
732
  const editor = useSlate();
@@ -767,40 +768,50 @@ const DraggingProvider = ({
767
768
  const removeDraggingStyle = useCallback(() => {
768
769
  setDragNodePath(null);
769
770
  setDragoverNodePath(null);
771
+ setDragoverDirection(null);
770
772
  if (!root2)
771
773
  return;
772
774
  root2.querySelectorAll("[data-slate-dragover='true']").forEach((item2) => item2.removeAttribute("data-slate-dragover"));
773
775
  root2.querySelectorAll("[data-slate-dragover-direction]").forEach((item2) => item2.removeAttribute("data-slate-dragover-direction"));
774
- }, [root2, setDragNodePath, setDragoverNodePath]);
776
+ }, [root2, setDragNodePath, setDragoverDirection, setDragoverNodePath]);
775
777
  useEffect(() => {
776
778
  if (!root2 || !inited)
777
779
  return;
778
780
  if (editorProps.readOnly)
779
781
  return;
780
782
  const onDragover = (ev) => {
783
+ const removeSelectedStyle = () => {
784
+ root2 == null ? void 0 : root2.querySelectorAll("[data-slate-dragover='true']").forEach((item2) => item2.removeAttribute("data-slate-dragover"));
785
+ root2 == null ? void 0 : root2.querySelectorAll("[data-slate-dragover-direction]").forEach(
786
+ (item2) => item2.removeAttribute("data-slate-dragover-direction")
787
+ );
788
+ setDragoverNodePath(null);
789
+ setDragoverDirection(null);
790
+ };
781
791
  const propsData = propsDataRef.current;
782
792
  if (!propsData) {
793
+ removeSelectedStyle();
783
794
  return;
784
795
  }
785
796
  if (!root2) {
797
+ removeSelectedStyle();
786
798
  return;
787
799
  }
788
800
  if (!ev.target) {
789
801
  setDragoverNodePath(null);
802
+ removeSelectedStyle();
790
803
  return;
791
804
  }
792
805
  if (ev.dataTransfer) {
793
806
  ev.dataTransfer.dropEffect = propsData.action;
794
807
  }
795
- const removeSelectedStyle = () => {
796
- root2 == null ? void 0 : root2.querySelectorAll("[data-slate-dragover='true']").forEach((item2) => item2.removeAttribute("data-slate-dragover"));
797
- setDragoverNodePath(null);
798
- };
799
808
  try {
800
809
  if (isDOMElement(ev.target) && root2.contains(ev.target) && ev.target !== root2.documentElement) {
801
810
  let dropElement = ReactEditor.toSlateNode(editor, ev.target);
802
- if (!dropElement)
811
+ if (!dropElement) {
812
+ removeSelectedStyle();
803
813
  return;
814
+ }
804
815
  let dropPath = ReactEditor.findPath(editor, dropElement);
805
816
  let source = null;
806
817
  if ((propsData == null ? void 0 : propsData.action) === "move") {
@@ -810,6 +821,7 @@ const DraggingProvider = ({
810
821
  removeSelectedStyle();
811
822
  return;
812
823
  }
824
+ let dropNodeEntry = null;
813
825
  if (!standaloneElementEditing) {
814
826
  const [standaloneElementEntry] = Editor.nodes(editor, {
815
827
  at: dropPath,
@@ -818,53 +830,66 @@ const DraggingProvider = ({
818
830
  }
819
831
  });
820
832
  if (standaloneElementEntry) {
821
- return;
833
+ const parentPath = Path.parent(standaloneElementEntry[1]);
834
+ const parentElement = Node.get(editor, parentPath);
835
+ const isInsert = NodeUtils.isParentCategoryType(
836
+ propsData.element.type,
837
+ parentElement.type
838
+ );
839
+ if (isInsert) {
840
+ dropNodeEntry = standaloneElementEntry;
841
+ } else {
842
+ removeSelectedStyle();
843
+ return;
844
+ }
822
845
  }
823
846
  }
824
- const [dropNodeEntry] = Editor.nodes(editor, {
825
- at: dropPath,
826
- match: (node2, path2) => {
827
- if (!Path.isAncestor(path2, dropPath) && !Path.equals(path2, dropPath))
828
- return false;
829
- if (!NodeUtils.isBlockElement(node2))
830
- return false;
831
- if (NodeUtils.isUnsetElement(node2))
832
- return false;
833
- if (NodeUtils.isPageElement(node2))
834
- return false;
835
- const parentPath = Path.parent(path2);
836
- const parentElement = Node.get(editor, parentPath);
837
- if (Editor.isEditor(node2))
838
- return false;
839
- if (!parentElement || !parentElement.type)
840
- return false;
841
- const voidElementParent = Editor.above(editor, {
842
- at: path2,
843
- match: (node3) => {
844
- if (NodeUtils.isVoidBlockElement(node3))
845
- return true;
847
+ if (!dropNodeEntry) {
848
+ [dropNodeEntry] = Editor.nodes(editor, {
849
+ at: dropPath,
850
+ match: (node2, path2) => {
851
+ if (!Path.isAncestor(path2, dropPath) && !Path.equals(path2, dropPath))
852
+ return false;
853
+ if (!NodeUtils.isBlockElement(node2))
854
+ return false;
855
+ if (NodeUtils.isUnsetElement(node2))
856
+ return false;
857
+ if (NodeUtils.isPageElement(node2))
858
+ return false;
859
+ const parentPath = Path.parent(path2);
860
+ const parentElement = Node.get(editor, parentPath);
861
+ if (Editor.isEditor(node2))
862
+ return false;
863
+ if (!parentElement || !parentElement.type)
864
+ return false;
865
+ const voidElementParent = Editor.above(editor, {
866
+ at: path2,
867
+ match: (node3) => {
868
+ if (NodeUtils.isVoidBlockElement(node3))
869
+ return true;
870
+ return false;
871
+ }
872
+ });
873
+ if (voidElementParent) {
846
874
  return false;
847
875
  }
848
- });
849
- if (voidElementParent) {
876
+ if (NodeUtils.isParentCategoryType(
877
+ propsData.element.type,
878
+ node2.type
879
+ ) && !NodeUtils.isVoidBlockElement(node2)) {
880
+ return true;
881
+ }
882
+ if (NodeUtils.isParentCategoryType(
883
+ propsData.element.type,
884
+ parentElement.type
885
+ )) {
886
+ return true;
887
+ }
850
888
  return false;
851
- }
852
- if (NodeUtils.isParentCategoryType(
853
- propsData.element.type,
854
- node2.type
855
- ) && !NodeUtils.isVoidBlockElement(node2)) {
856
- return true;
857
- }
858
- if (NodeUtils.isParentCategoryType(
859
- propsData.element.type,
860
- parentElement.type
861
- )) {
862
- return true;
863
- }
864
- return false;
865
- },
866
- mode: "lowest"
867
- });
889
+ },
890
+ mode: "lowest"
891
+ });
892
+ }
868
893
  dropElement = dropNodeEntry == null ? void 0 : dropNodeEntry[0];
869
894
  dropPath = dropNodeEntry == null ? void 0 : dropNodeEntry[1];
870
895
  if (!dropElement) {
@@ -879,12 +904,6 @@ const DraggingProvider = ({
879
904
  const node = ReactEditor.toDOMNode(editor, dropElement);
880
905
  const rect = node.getBoundingClientRect();
881
906
  const isTop = ev.clientY < rect.y + rect.height / 2;
882
- root2.querySelectorAll("[data-slate-dragover='true']").forEach((item2) => {
883
- if (item2 !== node) {
884
- item2.removeAttribute("data-slate-dragover");
885
- }
886
- });
887
- node == null ? void 0 : node.setAttribute("data-slate-dragover", "true");
888
907
  let direction = "bottom";
889
908
  if (isTop) {
890
909
  direction = "top";
@@ -895,12 +914,27 @@ const DraggingProvider = ({
895
914
  ) && !NodeUtils.isVoidBlockElement(dropElement)) {
896
915
  direction = "middle";
897
916
  }
898
- node == null ? void 0 : node.setAttribute("data-slate-dragover-direction", direction);
917
+ root2.querySelectorAll("[data-slate-dragover='true']").forEach((item2) => {
918
+ if (item2 !== node) {
919
+ item2.removeAttribute("data-slate-dragover");
920
+ }
921
+ });
922
+ node == null ? void 0 : node.setAttribute("data-slate-dragover", "true");
923
+ root2.querySelectorAll("[data-slate-dragover-direction]").forEach((item2) => {
924
+ if (item2 !== node) {
925
+ item2.removeAttribute("data-slate-dragover-direction");
926
+ }
927
+ });
928
+ node == null ? void 0 : node.setAttribute("data-slate-dragover-direction", direction || "");
899
929
  try {
900
930
  const dragoverNodePath = ReactEditor.findPath(editor, dropElement);
901
931
  setDragoverNodePath(dragoverNodePath);
932
+ if (direction) {
933
+ setDragoverDirection(direction);
934
+ }
902
935
  } catch (error2) {
903
936
  console.error(error2);
937
+ removeSelectedStyle();
904
938
  }
905
939
  } else {
906
940
  removeSelectedStyle();
@@ -1091,6 +1125,7 @@ const DraggingProvider = ({
1091
1125
  removeDraggingStyle,
1092
1126
  removePlaceholder,
1093
1127
  root2,
1128
+ setDragoverDirection,
1094
1129
  setDragoverNodePath,
1095
1130
  setHoverNodePath,
1096
1131
  setSelectedNodePath,
@@ -1197,7 +1232,7 @@ const EditorContextProvider = (props) => {
1197
1232
  }, 100);
1198
1233
  return () => timer && clearInterval(timer);
1199
1234
  }, [editor]);
1200
- const { lock } = useEditorState();
1235
+ const lock = useLockState();
1201
1236
  const { universalElementSetting } = useEditorProps();
1202
1237
  const valid = !lock;
1203
1238
  const getFieldValue = useEventCallback((path2, name) => {
@@ -1638,11 +1673,9 @@ const useElementDefault = ({
1638
1673
  mobileAttributes
1639
1674
  };
1640
1675
  };
1641
- const useElementInteract = () => {
1642
- const editor = useSlate();
1643
- const { setSelectedNodePath, setHoverNodePath, selectedNodePath, lock } = useEditorState();
1676
+ const useLastSelectedNode = () => {
1677
+ const selectedNodePath = useSelectedNodePath();
1644
1678
  const { selectedNode } = useSelectedNode();
1645
- const { emptyPageElement } = useEditorProps();
1646
1679
  const lastSelectedNode = useRef(null);
1647
1680
  const lastSelectedNodePath = useRef(null);
1648
1681
  if (!isEqual(lastSelectedNodePath.current, selectedNodePath)) {
@@ -1652,7 +1685,14 @@ const useElementInteract = () => {
1652
1685
  if (!lastSelectedNode.current && selectedNode) {
1653
1686
  lastSelectedNode.current = cloneDeep(selectedNode);
1654
1687
  }
1655
- const copyBlock = useCallback(
1688
+ const isChanged = !isEqual(lastSelectedNode.current, selectedNode);
1689
+ return { lastSelectedNode, isChanged };
1690
+ };
1691
+ const useCopyBlock = () => {
1692
+ const editor = useSlate();
1693
+ const lock = useLockState();
1694
+ const setSelectedNodePath = useSetSelectedNodePath();
1695
+ return useCallback(
1656
1696
  (path2) => {
1657
1697
  if (lock)
1658
1698
  return;
@@ -1669,7 +1709,12 @@ const useElementInteract = () => {
1669
1709
  },
1670
1710
  [editor, lock, setSelectedNodePath]
1671
1711
  );
1672
- const moveUp = useCallback(
1712
+ };
1713
+ const useMoveUp = () => {
1714
+ const editor = useSlate();
1715
+ const lock = useLockState();
1716
+ const setSelectedNodePath = useSetSelectedNodePath();
1717
+ return useCallback(
1673
1718
  (path2) => {
1674
1719
  if (lock)
1675
1720
  return;
@@ -1688,7 +1733,12 @@ const useElementInteract = () => {
1688
1733
  },
1689
1734
  [editor, lock, setSelectedNodePath]
1690
1735
  );
1691
- const moveDown = useCallback(
1736
+ };
1737
+ const useMoveDown = () => {
1738
+ const editor = useSlate();
1739
+ const lock = useLockState();
1740
+ const setSelectedNodePath = useSetSelectedNodePath();
1741
+ return useCallback(
1692
1742
  (path2) => {
1693
1743
  if (lock)
1694
1744
  return;
@@ -1707,7 +1757,13 @@ const useElementInteract = () => {
1707
1757
  },
1708
1758
  [editor, lock, setSelectedNodePath]
1709
1759
  );
1710
- const deleteBlock = useCallback(
1760
+ };
1761
+ const useDeleteBlock = () => {
1762
+ const editor = useSlate();
1763
+ const lock = useLockState();
1764
+ const setSelectedNodePath = useSetSelectedNodePath();
1765
+ const setHoverNodePath = useSetHoverNodePath();
1766
+ return useCallback(
1711
1767
  (path2) => {
1712
1768
  if (lock)
1713
1769
  return;
@@ -1736,7 +1792,13 @@ const useElementInteract = () => {
1736
1792
  },
1737
1793
  [editor, lock, setHoverNodePath, setSelectedNodePath]
1738
1794
  );
1739
- const clearCanvas = useCallback(() => {
1795
+ };
1796
+ const useClearCanvas = () => {
1797
+ const editor = useSlate();
1798
+ const lock = useLockState();
1799
+ const setSelectedNodePath = useSetSelectedNodePath();
1800
+ const { emptyPageElement } = useEditorProps();
1801
+ return useCallback(() => {
1740
1802
  Editor.withoutNormalizing(editor, () => {
1741
1803
  if (lock)
1742
1804
  return;
@@ -1772,7 +1834,12 @@ const useElementInteract = () => {
1772
1834
  setSelectedNodePath(null);
1773
1835
  Transforms.deselect(editor);
1774
1836
  }, [editor, emptyPageElement, lock, setSelectedNodePath]);
1775
- const resetSelectedNode = useEventCallback(() => {
1837
+ };
1838
+ const useResetSelectedNode = () => {
1839
+ const editor = useSlate();
1840
+ const selectedNodePath = useSelectedNodePath();
1841
+ const { lastSelectedNode } = useLastSelectedNode();
1842
+ return useEventCallback(() => {
1776
1843
  if (!selectedNodePath || !lastSelectedNode.current)
1777
1844
  return;
1778
1845
  editor.replaceNode({
@@ -1780,11 +1847,20 @@ const useElementInteract = () => {
1780
1847
  node: lastSelectedNode.current
1781
1848
  });
1782
1849
  });
1850
+ };
1851
+ const useElementInteract = () => {
1852
+ const copyBlock = useCopyBlock();
1853
+ const moveUp = useMoveUp();
1854
+ const moveDown = useMoveDown();
1855
+ const deleteBlock = useDeleteBlock();
1856
+ const clearCanvas = useClearCanvas();
1857
+ const resetSelectedNode = useResetSelectedNode();
1858
+ const { isChanged } = useLastSelectedNode();
1783
1859
  return {
1784
1860
  copyBlock,
1785
1861
  deleteBlock,
1786
1862
  clearCanvas,
1787
- isChanged: !isEqual(lastSelectedNode.current, selectedNode),
1863
+ isChanged,
1788
1864
  resetSelectedNode,
1789
1865
  moveUp,
1790
1866
  moveDown
@@ -2016,7 +2092,6 @@ const ElementTools$1 = ({ element, nodeElement, path: path2 }) => {
2016
2092
  const editor = useSlate();
2017
2093
  const { copyBlock, deleteBlock } = useElementInteract();
2018
2094
  const {
2019
- universalElementSetting,
2020
2095
  quantityLimitCheck,
2021
2096
  ElementTools: ElementTools2,
2022
2097
  ElementToolsInner,
@@ -2024,14 +2099,12 @@ const ElementTools$1 = ({ element, nodeElement, path: path2 }) => {
2024
2099
  showPreviousLevelIcon
2025
2100
  } = useEditorProps();
2026
2101
  const { open } = useUniversalContent();
2027
- const {
2028
- setSelectedNodePath,
2029
- selectedNodePath,
2030
- universalElementEditing,
2031
- universalElementPath,
2032
- standaloneElementEditing,
2033
- standaloneElementPath
2034
- } = useEditorState();
2102
+ const { setSelectedNodePath } = useEditorActions();
2103
+ const selectedNodePath = useSelectedNodePath();
2104
+ const universalElementEditing = useUniversalElementEditing();
2105
+ const universalElementPath = useUniversalElementPath();
2106
+ const standaloneElementEditing = useStandaloneElementEditing();
2107
+ const standaloneElementPath = useStandaloneElementPath();
2035
2108
  const isPage = NodeUtils.isPageElement(element);
2036
2109
  const { dragHandle } = useDragging({
2037
2110
  element,
@@ -2158,17 +2231,10 @@ const ElementTools$1 = ({ element, nodeElement, path: path2 }) => {
2158
2231
  ), !isEditingUniversalElement && !isEditingStandaloneElement && /* @__PURE__ */ React__default.createElement("div", { className: "element-tools-item", onPointerDown: onCopy }, /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-copy" })), !hideAddToCollection && /* @__PURE__ */ React__default.createElement("div", { className: "element-tools-item", onPointerDown: openModal }, /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-collection" })), !isEditingUniversalElement && !isEditingStandaloneElement && /* @__PURE__ */ React__default.createElement("div", { className: "element-tools-item", onPointerDown: onDelete }, /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-delete" })))
2159
2232
  ),
2160
2233
  showDragMoveIcon && !isEditingUniversalElement && !isEditingStandaloneElement && /* @__PURE__ */ React__default.createElement("div", __spreadValues({ className: "element-tools-move-handle" }, dragHandleV2), /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-move" }))
2161
- ), /* @__PURE__ */ React__default.createElement("div", { className: "element-dragover" }), /* @__PURE__ */ React__default.createElement("style", null, styleText$f));
2162
- const isContentElement = NodeUtils.isContentElement(element);
2163
- if (isContentElement) {
2164
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, createPortal(
2165
- /* @__PURE__ */ React__default.createElement("div", null, renderContent),
2166
- nodeElement.firstChild
2167
- ));
2168
- }
2169
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, createPortal(renderContent, nodeElement));
2234
+ ), /* @__PURE__ */ React__default.createElement("div", { className: "element-dragover" }), /* @__PURE__ */ React__default.createElement("style", null, styleText$g));
2235
+ return /* @__PURE__ */ React__default.createElement("div", null, renderContent);
2170
2236
  };
2171
- const styleText$e = "body [data-slate-hover=true] .element-tools-container {\n outline: 2px solid var(--hover-color);\n}\nbody [data-slate-hover=true] .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\nbody [data-slate-hover=true] .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\nbody [data-slate-hover=true] .element-tools-container .element-tools-move-handle {\n background-color: var(--hover-color);\n}\n\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-tools {\n display: none;\n}\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-drag-button {\n display: none;\n}\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-tools-move-handle {\n display: none;\n}";
2237
+ const styleText$f = "body [data-slate-hover=true] .element-tools-container {\n outline: 2px solid var(--hover-color);\n}\nbody [data-slate-hover=true] .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\nbody [data-slate-hover=true] .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\nbody [data-slate-hover=true] .element-tools-container .element-tools-move-handle {\n background-color: var(--hover-color);\n}\n\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-tools {\n display: none;\n}\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-drag-button {\n display: none;\n}\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-tools-move-handle {\n display: none;\n}";
2172
2238
  const ElementHover$1 = ({
2173
2239
  element,
2174
2240
  nodeElement,
@@ -2179,28 +2245,19 @@ const ElementHover$1 = ({
2179
2245
  return null;
2180
2246
  if (NodeUtils.isUnsetElement(element))
2181
2247
  return null;
2182
- const renderContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(ElementTools$1, { element, nodeElement, path: path2 }), /* @__PURE__ */ React__default.createElement("style", null, styleText$e));
2183
- const isContentElement = NodeUtils.isContentElement(element);
2184
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, createPortal(
2185
- isContentElement ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("td", null, renderContent)) : renderContent,
2186
- nodeElement
2187
- ));
2248
+ const renderContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(ElementTools$1, { element, nodeElement, path: path2 }), /* @__PURE__ */ React__default.createElement("style", null, styleText$f));
2249
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent);
2188
2250
  };
2189
- const styleText$d = "[data-slate-selected=true] .element-tools-container,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container {\n outline: 2px solid var(--selected-color);\n}\n[data-slate-selected=true] .element-tools-container .element-tools,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--selected-color);\n}\n[data-slate-selected=true] .element-tools-container .element-drag-button,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container .element-drag-button {\n background-color: var(--selected-color);\n}\n[data-slate-selected=true] .element-tools-container .element-tools-move-handle,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container .element-tools-move-handle {\n background-color: var(--selected-color);\n}\n\n[data-slate-block=page][data-slate-selected=true] > .element-tools-container .element-tools {\n display: none;\n}\n[data-slate-block=page][data-slate-selected=true] > .element-tools-container .element-drag-button {\n display: none;\n}\n[data-slate-block=page][data-slate-selected=true] > .element-tools-container .element-tools-move-handle {\n display: none;\n}";
2251
+ const styleText$e = "[data-slate-selected=true] .element-tools-container,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container {\n outline: 2px solid var(--selected-color);\n}\n[data-slate-selected=true] .element-tools-container .element-tools,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--selected-color);\n}\n[data-slate-selected=true] .element-tools-container .element-drag-button,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container .element-drag-button {\n background-color: var(--selected-color);\n}\n[data-slate-selected=true] .element-tools-container .element-tools-move-handle,\n[data-slate-hover=true] [data-slate-selected=true] .element-tools-container .element-tools-move-handle {\n background-color: var(--selected-color);\n}\n\n[data-slate-block=page][data-slate-selected=true] > .element-tools-container .element-tools {\n display: none;\n}\n[data-slate-block=page][data-slate-selected=true] > .element-tools-container .element-drag-button {\n display: none;\n}\n[data-slate-block=page][data-slate-selected=true] > .element-tools-container .element-tools-move-handle {\n display: none;\n}";
2190
2252
  const ElementSelected = ({ element, nodeElement, path: path2 }) => {
2191
2253
  if (NodeUtils.isUnsetElement(element))
2192
2254
  return null;
2193
- const isDividerElement = NodeUtils.isDividerElement(element);
2194
- const renderContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(ElementTools$1, { element, nodeElement, path: path2 }), /* @__PURE__ */ React__default.createElement("style", null, styleText$d));
2195
- const isContentElement = NodeUtils.isContentElement(element);
2196
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, createPortal(
2197
- isContentElement ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("td", { style: { width: isDividerElement ? "0px" : void 0 } }, renderContent)) : renderContent,
2198
- nodeElement
2199
- ));
2255
+ const renderContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(ElementTools$1, { element, nodeElement, path: path2 }), /* @__PURE__ */ React__default.createElement("style", null, styleText$e));
2256
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent);
2200
2257
  };
2201
- const styleText$c = "[data-slate-block=page] {\n --sectionElementOffset: 100px;\n --wrapperElementOffset: 150px;\n}\n\n@media screen and (max-width: 850px) {\n [data-slate-block=page] {\n --sectionElementOffset: 70px;\n --wrapperElementOffset: 100px;\n }\n}\n.section-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n.hero-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-full-width=true].section-category-hover {\n width: calc(100% - 4px);\n transform: none;\n}\n\n[data-is-hero-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-section-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-section-category=true][data-is-full-width=true].element-tools-container {\n width: calc(100% - 4px - 16px);\n transform: none;\n}\n\n.wrapper-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n}\n\n[data-is-full-width=true].wrapper-category-hover {\n width: calc(100% - 4px - 16px);\n transform: none;\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n position: absolute;\n}\n\n[data-is-wrapper-category=true][data-is-full-width=true].element-tools-container {\n width: calc(100% - 4px);\n transform: none;\n}\n\n.wrapper-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n position: absolute;\n}";
2202
- const styleText$b = "[data-standard-table2-selected=true] ::selection {\n background: none !important;\n}\n\n[data-standard-table2-selected=true] [data-standard-table2-td-selected=true] {\n background-color: rgba(199, 199, 199, 0.4) !important;\n}";
2203
- const styleText$a = ".easy-email-pro-table-operation-menu {\n position: fixed;\n z-index: 999999;\n background-color: #fff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n font-size: 14px;\n z-index: 100;\n overflow: hidden;\n border-radius: 4px;\n padding: 4px 0;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-dividing {\n height: 1px;\n background-color: #efefef;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n line-height: 18px;\n background-color: #fff;\n cursor: pointer;\n color: #595959;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item:hover {\n background-color: #efefef;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item .easy-email-pro-table-operation-menu-icon {\n margin-right: 8px;\n height: 20px;\n width: 20px;\n font-size: 0;\n}";
2258
+ const styleText$d = "[data-slate-block=page] {\n --sectionElementOffset: 100px;\n --wrapperElementOffset: 150px;\n}\n\n@media screen and (max-width: 850px) {\n [data-slate-block=page] {\n --sectionElementOffset: 70px;\n --wrapperElementOffset: 100px;\n }\n}\n.section-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n.hero-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-full-width=true].section-category-hover {\n width: calc(100% - 4px);\n transform: none;\n}\n\n[data-is-hero-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-section-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-section-category=true][data-is-full-width=true].element-tools-container {\n width: calc(100% - 4px - 16px);\n transform: none;\n}\n\n.wrapper-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n}\n\n[data-is-full-width=true].wrapper-category-hover {\n width: calc(100% - 4px - 16px);\n transform: none;\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n position: absolute;\n}\n\n[data-is-wrapper-category=true][data-is-full-width=true].element-tools-container {\n width: calc(100% - 4px);\n transform: none;\n}\n\n.wrapper-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n position: absolute;\n}";
2259
+ const styleText$c = "[data-standard-table2-selected=true] ::selection {\n background: none !important;\n}\n\n[data-standard-table2-selected=true] [data-standard-table2-td-selected=true] {\n background-color: rgba(199, 199, 199, 0.4) !important;\n}";
2260
+ const styleText$b = ".easy-email-pro-table-operation-menu {\n position: fixed;\n z-index: 999999;\n background-color: #fff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n font-size: 14px;\n z-index: 100;\n overflow: hidden;\n border-radius: 4px;\n padding: 4px 0;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-dividing {\n height: 1px;\n background-color: #efefef;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n line-height: 18px;\n background-color: #fff;\n cursor: pointer;\n color: #595959;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item:hover {\n background-color: #efefef;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item .easy-email-pro-table-operation-menu-icon {\n margin-right: 8px;\n height: 20px;\n width: 20px;\n font-size: 0;\n}";
2204
2261
  const stylesText$1 = '.BlockSideBar .arco-tabs-header {\n display: flex;\n width: 100%;\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title {\n flex: 1;\n margin: 0px !important;\n padding: 0 !important;\n height: 60px;\n line-height: 60px;\n position: relative;\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title:hover::after {\n content: "";\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: initial;\n height: 2px;\n background-color: var(--color-border-3);\n transition: left 0.2s cubic-bezier(0.34, 0.69, 0.1, 1), width 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title .arco-tabs-header-title-text {\n display: block;\n text-align: center;\n width: 100%;\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title .arco-tabs-header-title-text::before {\n display: none;\n}\n.BlockSideBar .arco-tabs-content {\n padding-top: 0;\n}\n\n.ConfigurationSideBar {\n height: 60px;\n line-height: 60px;\n position: relative;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n align-items: center;\n justify-content: center;\n color: rgb(var(--primary-6));\n font-weight: 500;\n}';
2205
2262
  const UniversalList = () => {
2206
2263
  const { universalElementSetting } = useEditorProps();
@@ -2538,7 +2595,7 @@ const defaultCategories = [
2538
2595
  }
2539
2596
  ];
2540
2597
  const BlockList = ({ tab }) => {
2541
- const { universalElementEditing } = useEditorState();
2598
+ const universalElementEditing = useUniversalElementEditing();
2542
2599
  if (universalElementEditing) {
2543
2600
  return /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement(DefaultBlockList, null));
2544
2601
  }
@@ -2546,11 +2603,9 @@ const BlockList = ({ tab }) => {
2546
2603
  };
2547
2604
  const DefaultBlockList = () => {
2548
2605
  const editorProps = useEditorProps();
2549
- const {
2550
- universalElementEditing,
2551
- standaloneElementEditing,
2552
- initialStandaloneElement
2553
- } = useEditorState();
2606
+ const standaloneElementEditing = useStandaloneElementEditing();
2607
+ const initialStandaloneElement = useStandaloneElement();
2608
+ const universalElementEditing = useUniversalElementEditing();
2554
2609
  const categories = editorProps.categories || defaultCategories;
2555
2610
  const defaultActiveKey = useMemo(
2556
2611
  () => [
@@ -2652,7 +2707,7 @@ const DefaultBlockList = () => {
2652
2707
  };
2653
2708
  const BlocksPanel = () => {
2654
2709
  const [tab, setTab] = useState("Default");
2655
- const { universalElementEditing } = useEditorState();
2710
+ const universalElementEditing = useUniversalElementEditing();
2656
2711
  const { universalElementSetting } = useEditorProps();
2657
2712
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, !universalElementEditing && universalElementSetting && /* @__PURE__ */ React__default.createElement("div", { style: { padding: 24 } }, /* @__PURE__ */ React__default.createElement(Button$2.Group, { style: { width: "100%" } }, /* @__PURE__ */ React__default.createElement(
2658
2713
  Button$2,
@@ -2676,7 +2731,8 @@ const ConfigurationDrawer = ({
2676
2731
  height,
2677
2732
  onClose: propsOnClose
2678
2733
  }) => {
2679
- const { selectedNodePath, setSelectedNodePath } = useEditorState();
2734
+ const selectedNodePath = useSelectedNodePath();
2735
+ const { setSelectedNodePath } = useEditorActions();
2680
2736
  const [ref, setRef] = useState(null);
2681
2737
  const visible = Boolean(selectedNodePath) && (selectedNodePath == null ? void 0 : selectedNodePath.join("")) !== "0";
2682
2738
  const onClose = useCallback(() => {
@@ -7007,7 +7063,7 @@ function ComponentItem({
7007
7063
  onToggleCollapse,
7008
7064
  dragHandleProps = {}
7009
7065
  }) {
7010
- const { setSelectedNodePath } = useEditorState();
7066
+ const { setSelectedNodePath } = useEditorActions();
7011
7067
  const { deleteBlock } = useElementInteract();
7012
7068
  const editor = useSlateStatic();
7013
7069
  const onClick = () => {
@@ -7182,12 +7238,10 @@ const BlockLayer = () => {
7182
7238
  ));
7183
7239
  };
7184
7240
  const BlockSideBar = ({ height }) => {
7185
- const {
7186
- setSelectedNodePath,
7187
- selectedNodePath,
7188
- universalElementEditing,
7189
- standaloneElementEditing
7190
- } = useEditorState();
7241
+ const { setSelectedNodePath } = useEditorActions();
7242
+ const selectedNodePath = useSelectedNodePath();
7243
+ const universalElementEditing = useUniversalElementEditing();
7244
+ const standaloneElementEditing = useStandaloneElementEditing();
7191
7245
  const { showLayer, compact, widgetMode } = useEditorProps();
7192
7246
  const { selectedNode } = useSelectedNode();
7193
7247
  const [activeTab, setActiveTab] = useState("Content");
@@ -7440,8 +7494,8 @@ const ColumnLayout = ({
7440
7494
  };
7441
7495
  const index$a = "";
7442
7496
  const UniversalElementPanel = () => {
7443
- const { selectedNodePath } = useSelectedNode();
7444
- const { setUniversalElementPath } = useEditorState();
7497
+ const selectedNodePath = useSelectedNodePath();
7498
+ const { setUniversalElementPath } = useEditorActions();
7445
7499
  const editor = useSlate();
7446
7500
  const onResetToEditableElement = () => {
7447
7501
  if (!selectedNodePath)
@@ -7494,14 +7548,12 @@ const ConfigurationPanel = ({
7494
7548
  onClose
7495
7549
  }) => {
7496
7550
  const editor = useSlate();
7497
- const {
7498
- selectedNodePath,
7499
- universalElementEditing,
7500
- standaloneElementEditing,
7501
- universalElementPath,
7502
- standaloneElementPath,
7503
- lock
7504
- } = useEditorState();
7551
+ const selectedNodePath = useSelectedNodePath();
7552
+ const universalElementEditing = useUniversalElementEditing();
7553
+ const standaloneElementEditing = useStandaloneElementEditing();
7554
+ const universalElementPath = useUniversalElementPath();
7555
+ const standaloneElementPath = useStandaloneElementPath();
7556
+ const lock = useLockState();
7505
7557
  const { quantityLimitCheck, compact } = useEditorProps();
7506
7558
  const { copyBlock, deleteBlock, isChanged, resetSelectedNode } = useElementInteract();
7507
7559
  const onCopy = useEventCallback((path2) => {
@@ -7717,7 +7769,8 @@ const Controller = () => {
7717
7769
  ));
7718
7770
  };
7719
7771
  const TabHeader = (props) => {
7720
- const { setActiveTab, activeTab } = useEditorState();
7772
+ const activeTab = useActiveTab();
7773
+ const { setActiveTab } = useEditorActions();
7721
7774
  const onChangeTab = useCallback(
7722
7775
  (tab) => {
7723
7776
  setActiveTab(tab);
@@ -7785,7 +7838,8 @@ function BlockPaths({
7785
7838
  standaloneElementPath,
7786
7839
  universalElementPath
7787
7840
  }) {
7788
- const { selectedNodePath, setSelectedNodePath } = useSelectedNode();
7841
+ const selectedNodePath = useSelectedNodePath();
7842
+ const { setSelectedNodePath } = useEditorActions();
7789
7843
  const editor = useSlate();
7790
7844
  const paths = useMemo(() => {
7791
7845
  const paths2 = [];
@@ -7861,13 +7915,11 @@ const EditorTabs = (props) => {
7861
7915
  ev.preventDefault();
7862
7916
  clearCanvas();
7863
7917
  };
7864
- const {
7865
- universalElementEditing,
7866
- standaloneElementEditing,
7867
- standaloneElementPath,
7868
- universalElementPath,
7869
- lock
7870
- } = useEditorState();
7918
+ const universalElementEditing = useUniversalElementEditing();
7919
+ const standaloneElementEditing = useStandaloneElementEditing();
7920
+ const standaloneElementPath = useStandaloneElementPath();
7921
+ const universalElementPath = useUniversalElementPath();
7922
+ const lock = useLockState();
7871
7923
  const canPreview = useMemo(() => {
7872
7924
  if (readOnly) {
7873
7925
  return false;
@@ -8348,12 +8400,10 @@ const UniversalElementEditorDrawer = ({ children }) => {
8348
8400
  const [loading, setLoading] = React__default.useState(false);
8349
8401
  const [isEditing, setIsEditing] = React__default.useState(false);
8350
8402
  const editor = useSlate();
8351
- const {
8352
- universalElementEditing,
8353
- setUniversalElementPath,
8354
- universalElementPath,
8355
- initialUniversalElement
8356
- } = useEditorState();
8403
+ const universalElementEditing = useUniversalElementEditing();
8404
+ const universalElementPath = useUniversalElementPath();
8405
+ const initialUniversalElement = useUniversalElement();
8406
+ const { setUniversalElementPath } = useEditorActions();
8357
8407
  const universalElement = universalElementPath && Node.get(editor, universalElementPath);
8358
8408
  const hasChanged = useMemo(() => {
8359
8409
  if (!universalElementPath || !initialUniversalElement)
@@ -8661,7 +8711,7 @@ const PreviewEmailDrawer = ({
8661
8711
  children
8662
8712
  }) => {
8663
8713
  const { isPreview, setIsPreview } = useEditorThemeState();
8664
- const { activeTab } = useEditorState();
8714
+ const activeTab = useActiveTab();
8665
8715
  const [isShowSidebar, setIsShowSidebar] = React__default.useState(false);
8666
8716
  const { values, mergetagsData, pageDataVariables } = useEditorContext();
8667
8717
  const {
@@ -14264,7 +14314,7 @@ const HoveringToolbar = () => {
14264
14314
  ]);
14265
14315
  if (!isShowHoveringBar || !list.length)
14266
14316
  return null;
14267
- const content = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, hoveringToolbar == null ? void 0 : hoveringToolbar.prefix, /* @__PURE__ */ React__default.createElement(SharedComponents.RichTextBar, { list }), hoveringToolbar == null ? void 0 : hoveringToolbar.subfix, /* @__PURE__ */ React__default.createElement("style", null, styleText$g));
14317
+ const content = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, hoveringToolbar == null ? void 0 : hoveringToolbar.prefix, /* @__PURE__ */ React__default.createElement(SharedComponents.RichTextBar, { list }), hoveringToolbar == null ? void 0 : hoveringToolbar.subfix, /* @__PURE__ */ React__default.createElement("style", null, styleText$h));
14268
14318
  if (hoveringToolbar == null ? void 0 : hoveringToolbar.fixed) {
14269
14319
  return /* @__PURE__ */ React__default.createElement("div", null, content);
14270
14320
  }
@@ -14385,8 +14435,8 @@ const BgColor = () => {
14385
14435
  mode: "lowest"
14386
14436
  });
14387
14437
  const { setFieldValue } = useEditorContext();
14388
- const { selectedNodePath } = useSelectedNode();
14389
- const { activeTab } = useEditorState();
14438
+ const activeTab = useActiveTab();
14439
+ const selectedNodePath = useSelectedNodePath();
14390
14440
  const { attributes, mobileAttributes } = useElementDefault({
14391
14441
  path: selectedNodePath,
14392
14442
  type: null
@@ -14498,8 +14548,8 @@ const FontColor = () => {
14498
14548
  mode: "lowest"
14499
14549
  });
14500
14550
  const { setFieldValue } = useEditorContext();
14501
- const { selectedNodePath } = useSelectedNode();
14502
- const { activeTab } = useEditorState();
14551
+ const activeTab = useActiveTab();
14552
+ const selectedNodePath = useSelectedNodePath();
14503
14553
  const { attributes, mobileAttributes } = useElementDefault({
14504
14554
  path: selectedNodePath,
14505
14555
  type: null
@@ -15169,7 +15219,7 @@ const TextLink = () => {
15169
15219
  const linkNodeEntry = getLinkNode(editor);
15170
15220
  const ref = useRef(null);
15171
15221
  const linkNode = linkNodeEntry == null ? void 0 : linkNodeEntry[0];
15172
- const { selectedNodePath } = useSelectedNode();
15222
+ const selectedNodePath = useSelectedNodePath();
15173
15223
  const [popupVisible, setPopupVisible] = useState(false);
15174
15224
  const { handleUploadClick, showSelectFileButton, onUpload, mergetags } = useEditorProps();
15175
15225
  const [isUploading, setIsUploading] = useState(false);
@@ -26854,7 +26904,7 @@ const URLFormatter = (v) => {
26854
26904
  function ImageUploader(props) {
26855
26905
  const { unsplash, handleUploadClick, mergetags } = useEditorProps();
26856
26906
  const { pageDataVariables, mergetagsData } = useEditorContext();
26857
- const { setLock } = useEditorState();
26907
+ const { setLock } = useEditorActions();
26858
26908
  const [isUploading, setIsUploading] = useState(false);
26859
26909
  const [preview, setPreview] = useState(false);
26860
26910
  const [unsplashVisible, setUnsplashVisible] = useState(false);
@@ -27577,7 +27627,7 @@ const RichtextBar = (props) => {
27577
27627
  /* @__PURE__ */ React__default.createElement(SharedComponents.HoveringToolbar, null),
27578
27628
  /* @__PURE__ */ React__default.createElement(EmailEditor, null),
27579
27629
  /* @__PURE__ */ React__default.createElement(SharedComponents.Hotkeys, null),
27580
- /* @__PURE__ */ React__default.createElement("style", null, styleText$g)
27630
+ /* @__PURE__ */ React__default.createElement("style", null, styleText$h)
27581
27631
  );
27582
27632
  }, [props.height, clientId, initialValue, editor, onPageChange]);
27583
27633
  };
@@ -29257,7 +29307,8 @@ const DisplayOptions = ({
29257
29307
  }) => {
29258
29308
  const editor = useSlate();
29259
29309
  const { showLogic = true } = useEditorProps();
29260
- const { selectedNode, selectedNodePath } = useSelectedNode();
29310
+ const { selectedNode } = useSelectedNode();
29311
+ const selectedNodePath = useSelectedNodePath();
29261
29312
  const isEnabledLogic = showLogic && EditorAuth.getFeatureEnabled("DYNAMIC_RENDER");
29262
29313
  const { getFieldValue, setFieldValue } = useEditorContext();
29263
29314
  if (!selectedNodePath || !selectedNode)
@@ -30020,10 +30071,12 @@ const ResponsiveTabs = ({
30020
30071
  desktop,
30021
30072
  children
30022
30073
  }) => {
30023
- const { activeTab, setActiveTab } = useEditorState();
30074
+ const activeTab = useActiveTab();
30075
+ const { setActiveTab } = useEditorActions();
30024
30076
  const { setFieldValue } = useEditorContext();
30025
30077
  const [count, setCount] = useState(0);
30026
- const { selectedNode, selectedNodePath } = useSelectedNode();
30078
+ const { selectedNode } = useSelectedNode();
30079
+ const selectedNodePath = useSelectedNodePath();
30027
30080
  const {
30028
30081
  showSourceCode,
30029
30082
  showLogic = true,
@@ -30239,7 +30292,8 @@ function AttributesContainer$e({
30239
30292
  nodePath,
30240
30293
  mode
30241
30294
  }) {
30242
- const { selectedNode, selectedNodePath } = useSelectedNode();
30295
+ const { selectedNode } = useSelectedNode();
30296
+ const selectedNodePath = useSelectedNodePath();
30243
30297
  const { setFieldValue } = useEditorContext();
30244
30298
  const onVerticalAlignChange = useEventCallback((value) => {
30245
30299
  let children = selectedNode == null ? void 0 : selectedNode.children;
@@ -31442,34 +31496,7 @@ function AttributesContainer$5({
31442
31496
  nodePath,
31443
31497
  mode
31444
31498
  }) {
31445
- const { selectedNode, selectedNodePath } = useSelectedNode();
31446
- const { setFieldValue } = useEditorContext();
31447
- useEventCallback((value) => {
31448
- let children = selectedNode == null ? void 0 : selectedNode.children;
31449
- let path2 = selectedNodePath;
31450
- if ((children == null ? void 0 : children[0]) && NodeUtils.isGroupElement(children[0])) {
31451
- children = children[0].children;
31452
- path2 = [...path2, 0];
31453
- }
31454
- children == null ? void 0 : children.forEach((_, index2) => {
31455
- setFieldValue(
31456
- [...path2, index2],
31457
- mode === ActiveTabKeys.DESKTOP ? "attributes.vertical-align" : "mobileAttributes.vertical-align",
31458
- value
31459
- );
31460
- });
31461
- });
31462
- useEventCallback((value) => {
31463
- const children = selectedNode == null ? void 0 : selectedNode.children;
31464
- const path2 = selectedNodePath;
31465
- if ((children == null ? void 0 : children[0]) && NodeUtils.isGroupElement(children[0])) {
31466
- setFieldValue(
31467
- [...path2, 0],
31468
- mode === ActiveTabKeys.DESKTOP ? "attributes.direction" : "mobileAttributes.direction",
31469
- value
31470
- );
31471
- }
31472
- });
31499
+ const { selectedNode } = useSelectedNode();
31473
31500
  if (!selectedNode)
31474
31501
  return null;
31475
31502
  return /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement(CollapseWrapper$1, { defaultActiveKey: ["0", "1", "2"] }, /* @__PURE__ */ React__default.createElement(Collapse.Item, { name: "2", header: t("Dimension") }, /* @__PURE__ */ React__default.createElement(
@@ -31534,7 +31561,8 @@ function AttributesContainer$4({
31534
31561
  nodePath,
31535
31562
  mode
31536
31563
  }) {
31537
- const { selectedNode, selectedNodePath } = useSelectedNode();
31564
+ const { selectedNode } = useSelectedNode();
31565
+ const selectedNodePath = useSelectedNodePath();
31538
31566
  const configFields = useMemo(() => {
31539
31567
  return (selectedNode == null ? void 0 : selectedNode.data.config) || [];
31540
31568
  }, [selectedNode]);
@@ -31759,8 +31787,6 @@ function AttributesContainer$3({
31759
31787
  ))));
31760
31788
  }
31761
31789
  const Table = ({ nodePath }) => {
31762
- useSelectedNode();
31763
- useEditorContext();
31764
31790
  return /* @__PURE__ */ React__default.createElement(AttributesPanelWrapper, null, /* @__PURE__ */ React__default.createElement(
31765
31791
  ResponsiveTabs,
31766
31792
  {
@@ -32050,7 +32076,9 @@ const ConfigPanelsMap = {
32050
32076
  [ElementType.STANDARD_BLOCK_QUOTE]: Blockquote
32051
32077
  };
32052
32078
  const AttributePanel = () => {
32053
- const { selectedNode, selectedNodePath, setSelectedNodePath } = useSelectedNode();
32079
+ const { selectedNode } = useSelectedNode();
32080
+ const selectedNodePath = useSelectedNodePath();
32081
+ const { setSelectedNodePath } = useEditorActions();
32054
32082
  const editor = useSlateStatic();
32055
32083
  const nodePath = useMemo(() => selectedNodePath, [selectedNodePath]);
32056
32084
  const Com = selectedNode && ConfigPanelsMap[selectedNode.type];
@@ -32086,12 +32114,10 @@ const AttributePanel = () => {
32086
32114
  }, [Com, nodePath, selectedNode]);
32087
32115
  };
32088
32116
  const ConfigurationSideBar = ({ height }) => {
32089
- const {
32090
- setSelectedNodePath,
32091
- selectedNodePath,
32092
- universalElementEditing,
32093
- standaloneElementEditing
32094
- } = useEditorState();
32117
+ const standaloneElementEditing = useStandaloneElementEditing();
32118
+ const universalElementEditing = useUniversalElementEditing();
32119
+ const { setSelectedNodePath } = useEditorActions();
32120
+ const selectedNodePath = useSelectedNodePath();
32095
32121
  const { compact } = useEditorProps();
32096
32122
  const [activeTab, setActiveTab] = useState("Style");
32097
32123
  const lastActiveTab = useRef(activeTab);
@@ -32514,7 +32540,7 @@ function WidgetConfigPanel({
32514
32540
  )
32515
32541
  ));
32516
32542
  }
32517
- const styleText$9 = ".MergeTagComponent-image {\n max-width: 150px;\n}";
32543
+ const styleText$a = ".MergeTagComponent-image {\n max-width: 150px;\n}";
32518
32544
  const MergeTagComponent = React__default.memo((props) => {
32519
32545
  const ref = useRef(null);
32520
32546
  const onCloseRef = useRefState(props.onClose);
@@ -32578,7 +32604,7 @@ const MergeTagComponent = React__default.memo((props) => {
32578
32604
  onPointerDown: (e) => e.stopPropagation(),
32579
32605
  onClick: (e) => e.stopPropagation()
32580
32606
  },
32581
- /* @__PURE__ */ React__default.createElement("style", null, styleText$9),
32607
+ /* @__PURE__ */ React__default.createElement("style", null, styleText$a),
32582
32608
  /* @__PURE__ */ React__default.createElement(
32583
32609
  Select$1,
32584
32610
  __spreadProps(__spreadValues({
@@ -32652,8 +32678,8 @@ const SvgMoreIcon = (props) => /* @__PURE__ */ React$2.createElement("svg", __sp
32652
32678
  display: "block",
32653
32679
  fill: "currentColor"
32654
32680
  }, fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props), /* @__PURE__ */ React$2.createElement("g", null, /* @__PURE__ */ React$2.createElement("path", { d: "M3,1.5A1.5,1.5,0,1,1,1.5,0,1.5,1.5,0,0,1,3,1.5Z" }), /* @__PURE__ */ React$2.createElement("path", { d: "M8,1.5A1.5,1.5,0,1,1,6.5,0,1.5,1.5,0,0,1,8,1.5Z" }), /* @__PURE__ */ React$2.createElement("path", { d: "M13,1.5A1.5,1.5,0,1,1,11.5,0,1.5,1.5,0,0,1,13,1.5Z" })));
32655
- const styleText$8 = ".easy-email-pro-image-MoreIcon {\n width: 26px;\n height: 26px;\n padding: 2px;\n position: absolute;\n color: #fff;\n right: 0px;\n z-index: 10;\n top: 0px;\n box-sizing: border-box;\n cursor: pointer;\n background-color: rgba(55, 53, 47, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n}\n.easy-email-pro-image-MoreIcon svg {\n width: 13px;\n}";
32656
- const styleText$7 = '.easy-email-pro-overlay-container {\n position: fixed;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .content-type {\n display: flex;\n padding-left: 14px;\n padding-right: 14px;\n margin-top: 6px;\n margin-bottom: 8px;\n color: rgba(55, 53, 47, 0.65);\n font-size: 11px;\n font-weight: 500;\n line-height: 120%;\n user-select: none;\n text-transform: uppercase;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item {\n line-height: 120%;\n width: 100%;\n user-select: none;\n font-size: 14px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .action-list-item-inner {\n display: flex;\n align-items: center;\n cursor: pointer;\n width: calc(100% - 8px);\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 3px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .action-list-item-inner-hover {\n transition: "background" 20ms ease-in 0s;\n background: rgba(55, 53, 47, 0.08);\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .img {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 10px;\n margin-right: 4px;\n margin-top: 1px;\n align-self: flex-start;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .img img {\n display: block;\n object-fit: cover;\n border-radius: 3px;\n width: 16px;\n height: 16px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .content {\n margin-left: 6px;\n margin-right: 12px;\n min-width: 0px;\n flex: 1 1 auto;\n text-align: left;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .content .title {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: rgba(55, 53, 47, 0.65);\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .content .desc {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: rgba(55, 53, 47, 0.65);\n margin-top: 2px;\n font-size: 12px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-scrollbar {\n display: flex;\n flex-direction: column;\n width: 324px;\n min-width: 180px;\n max-width: calc(100vw - 24px);\n height: 100%;\n max-height: 40vh;\n border-radius: 4px;\n background: white;\n position: relative;\n max-width: calc(100vw - 24px);\n box-shadow: rgba(15, 15, 15, 0.05) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px;\n overflow: auto;\n padding-top: 6px;\n padding-bottom: 6px;\n}';
32681
+ const styleText$9 = ".easy-email-pro-image-MoreIcon {\n width: 26px;\n height: 26px;\n padding: 2px;\n position: absolute;\n color: #fff;\n right: 0px;\n z-index: 10;\n top: 0px;\n box-sizing: border-box;\n cursor: pointer;\n background-color: rgba(55, 53, 47, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n}\n.easy-email-pro-image-MoreIcon svg {\n width: 13px;\n}";
32682
+ const styleText$8 = '.easy-email-pro-overlay-container {\n position: fixed;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .content-type {\n display: flex;\n padding-left: 14px;\n padding-right: 14px;\n margin-top: 6px;\n margin-bottom: 8px;\n color: rgba(55, 53, 47, 0.65);\n font-size: 11px;\n font-weight: 500;\n line-height: 120%;\n user-select: none;\n text-transform: uppercase;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item {\n line-height: 120%;\n width: 100%;\n user-select: none;\n font-size: 14px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .action-list-item-inner {\n display: flex;\n align-items: center;\n cursor: pointer;\n width: calc(100% - 8px);\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n border-radius: 3px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .action-list-item-inner-hover {\n transition: "background" 20ms ease-in 0s;\n background: rgba(55, 53, 47, 0.08);\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .img {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 10px;\n margin-right: 4px;\n margin-top: 1px;\n align-self: flex-start;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .img img {\n display: block;\n object-fit: cover;\n border-radius: 3px;\n width: 16px;\n height: 16px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .content {\n margin-left: 6px;\n margin-right: 12px;\n min-width: 0px;\n flex: 1 1 auto;\n text-align: left;\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .content .title {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: rgba(55, 53, 47, 0.65);\n}\n.easy-email-pro-overlay-container .easy-email-pro-overlay-wrapper .action-list-item .content .desc {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: rgba(55, 53, 47, 0.65);\n margin-top: 2px;\n font-size: 12px;\n}\n.easy-email-pro-overlay-container .easy-email-pro-scrollbar {\n display: flex;\n flex-direction: column;\n width: 324px;\n min-width: 180px;\n max-width: calc(100vw - 24px);\n height: 100%;\n max-height: 40vh;\n border-radius: 4px;\n background: white;\n position: relative;\n max-width: calc(100vw - 24px);\n box-shadow: rgba(15, 15, 15, 0.05) 0px 0px 0px 1px, rgba(15, 15, 15, 0.1) 0px 3px 6px, rgba(15, 15, 15, 0.2) 0px 9px 24px;\n overflow: auto;\n padding-top: 6px;\n padding-bottom: 6px;\n}';
32657
32683
  const SvgDuplicateIcon = (props) => /* @__PURE__ */ React$2.createElement("svg", __spreadValues({ viewBox: "0 0 16 16", xmlns: "http://www.w3.org/2000/svg", style: {
32658
32684
  width: 16,
32659
32685
  height: 16,
@@ -32921,7 +32947,7 @@ const MoreActionsMenusOverlay = (props) => {
32921
32947
  )
32922
32948
  );
32923
32949
  }));
32924
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-overlay-container", style: { left, top } }, /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-overlay-wrapper" }, /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-scrollbar scrollbar" }, list))), /* @__PURE__ */ React__default.createElement("style", null, styleText$7));
32950
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-overlay-container", style: { left, top } }, /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-overlay-wrapper" }, /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-scrollbar scrollbar" }, list))), /* @__PURE__ */ React__default.createElement("style", null, styleText$8));
32925
32951
  };
32926
32952
  const MoreIcon = ({
32927
32953
  isHover,
@@ -32963,7 +32989,7 @@ const MoreIcon = ({
32963
32989
  onPointerDown: onToggle
32964
32990
  },
32965
32991
  /* @__PURE__ */ React__default.createElement(SvgMoreIcon, null),
32966
- /* @__PURE__ */ React__default.createElement("style", null, styleText$8)
32992
+ /* @__PURE__ */ React__default.createElement("style", null, styleText$9)
32967
32993
  ), /* @__PURE__ */ React__default.createElement(
32968
32994
  MoreActionsMenusOverlay,
32969
32995
  {
@@ -33214,7 +33240,7 @@ const ImageAction = (props) => {
33214
33240
  const UnsplashImagesDrawer = forwardRef(
33215
33241
  (props, ref) => {
33216
33242
  const { unsplash } = useEditorProps();
33217
- const { setLock } = useEditorState();
33243
+ const { setLock } = useEditorActions();
33218
33244
  const [isUploading, setIsUploading] = useState(false);
33219
33245
  const [unsplashVisible, setUnsplashVisible] = useState(false);
33220
33246
  const initialVal = useRef(props.value);
@@ -33313,7 +33339,7 @@ const UnsplashImagesDrawer = forwardRef(
33313
33339
  ), /* @__PURE__ */ React__default.createElement("div", { ref, onClick: () => setUnsplashVisible(true) }, props.children));
33314
33340
  }
33315
33341
  );
33316
- const styleText$6 = ".MinimalistEditorTopBar {\n height: 50px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-bottom: 1px solid var(--color-border-2);\n position: relative;\n}\n.MinimalistEditorTopBar .MinimalistEditorTopBar-left-side {\n position: absolute;\n left: 10px;\n max-width: 400px;\n display: flex;\n align-items: center;\n}\n.MinimalistEditorTopBar .MinimalistEditorTopBar-right-side {\n position: absolute;\n right: 10px;\n}\n.MinimalistEditorTopBar .MinimalistEditorTopBar-center-side {\n max-width: 600px;\n min-width: 400px;\n display: flex;\n}\n.MinimalistEditorTopBar #RichTextBar .formatButton {\n font-size: 16px;\n}\n.MinimalistEditorTopBar .easy-email-pro-font-size,\n.MinimalistEditorTopBar .easy-email-pro-turnInto,\n.MinimalistEditorTopBar .easy-email-pro-font-family {\n margin-right: 10px;\n}\n.MinimalistEditorTopBar .easy-email-pro-font-size .arco-select-view,\n.MinimalistEditorTopBar .easy-email-pro-turnInto .arco-select-view,\n.MinimalistEditorTopBar .easy-email-pro-font-family .arco-select-view {\n border-width: 1px !important;\n}\n.MinimalistEditorTopBar .controller-item {\n cursor: pointer;\n font-size: 24px !important;\n color: rgb(34, 47, 62);\n}\n.MinimalistEditorTopBar .controller-item button {\n padding: 0 8px !important;\n}\n.MinimalistEditorTopBar [data-enable=false] {\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}";
33342
+ const styleText$7 = ".MinimalistEditorTopBar {\n height: 50px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-bottom: 1px solid var(--color-border-2);\n position: relative;\n}\n.MinimalistEditorTopBar .MinimalistEditorTopBar-left-side {\n position: absolute;\n left: 10px;\n max-width: 400px;\n display: flex;\n align-items: center;\n}\n.MinimalistEditorTopBar .MinimalistEditorTopBar-right-side {\n position: absolute;\n right: 10px;\n}\n.MinimalistEditorTopBar .MinimalistEditorTopBar-center-side {\n max-width: 600px;\n min-width: 400px;\n display: flex;\n}\n.MinimalistEditorTopBar #RichTextBar .formatButton {\n font-size: 16px;\n}\n.MinimalistEditorTopBar .easy-email-pro-font-size,\n.MinimalistEditorTopBar .easy-email-pro-turnInto,\n.MinimalistEditorTopBar .easy-email-pro-font-family {\n margin-right: 10px;\n}\n.MinimalistEditorTopBar .easy-email-pro-font-size .arco-select-view,\n.MinimalistEditorTopBar .easy-email-pro-turnInto .arco-select-view,\n.MinimalistEditorTopBar .easy-email-pro-font-family .arco-select-view {\n border-width: 1px !important;\n}\n.MinimalistEditorTopBar .controller-item {\n cursor: pointer;\n font-size: 24px !important;\n color: rgb(34, 47, 62);\n}\n.MinimalistEditorTopBar .controller-item button {\n padding: 0 8px !important;\n}\n.MinimalistEditorTopBar [data-enable=false] {\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}";
33317
33343
  const EditorTopBar = () => {
33318
33344
  const editor = useSlate();
33319
33345
  const { copyBlock, deleteBlock } = useElementInteract();
@@ -33433,7 +33459,7 @@ const EditorTopBar = () => {
33433
33459
  },
33434
33460
  /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-mobile" })
33435
33461
  )), /* @__PURE__ */ React__default.createElement(Space, null, /* @__PURE__ */ React__default.createElement(Button$2.Group, null, /* @__PURE__ */ React__default.createElement(Button$2, { disabled: !undoable }, /* @__PURE__ */ React__default.createElement(Tooltip, { position: "top", content: t("Undo") }, /* @__PURE__ */ React__default.createElement(IconUndo, { width: 40, onClick: editor.undo }))), /* @__PURE__ */ React__default.createElement(Button$2, { disabled: !redoable }, /* @__PURE__ */ React__default.createElement(Tooltip, { position: "top", content: t("Redo") }, /* @__PURE__ */ React__default.createElement(IconRedo, { onClick: editor.redo })))), canPreview && (lock ? /* @__PURE__ */ React__default.createElement(Tooltip, { content: t("Email preview") }, /* @__PURE__ */ React__default.createElement(Button$2, { disabled: lock }, /* @__PURE__ */ React__default.createElement(IconEye, null))) : /* @__PURE__ */ React__default.createElement(SharedComponents.PreviewEmailDrawer, null, /* @__PURE__ */ React__default.createElement(Tooltip, { content: t("Email preview") }, /* @__PURE__ */ React__default.createElement(Button$2, { disabled: lock }, /* @__PURE__ */ React__default.createElement(IconEye, null)))))), /* @__PURE__ */ React__default.createElement("div", null)))
33436
- ), /* @__PURE__ */ React__default.createElement("style", null, styleText$6));
33462
+ ), /* @__PURE__ */ React__default.createElement("style", null, styleText$7));
33437
33463
  };
33438
33464
  const index$3 = "";
33439
33465
  const PopupCard = (props) => {
@@ -33466,7 +33492,7 @@ const ColorPicker = ({
33466
33492
  label
33467
33493
  }) => {
33468
33494
  const { setFieldValue } = useEditorContext();
33469
- const { selectedNodePath } = useSelectedNode();
33495
+ const selectedNodePath = useSelectedNodePath();
33470
33496
  const element = useElementDefault({ path: path2, type: null });
33471
33497
  const ref = useRef(null);
33472
33498
  const onClose = useEventCallback(() => {
@@ -33560,7 +33586,7 @@ const ColorPicker = ({
33560
33586
  const FontFamily = ({ path: path2, name }) => {
33561
33587
  const { fontList } = useFontFamily();
33562
33588
  const { setFieldValue } = useEditorContext();
33563
- const { selectedNodePath } = useSelectedNode();
33589
+ const selectedNodePath = useSelectedNodePath();
33564
33590
  const element = useElementDefault({ path: path2, type: null });
33565
33591
  const onChange = (val) => {
33566
33592
  setFieldValue(selectedNodePath, name, val);
@@ -33586,7 +33612,7 @@ const options$1 = ["12px", "14px", "16px", "18px", "24px", "32px", "48px"];
33586
33612
  const FontSize = ({ path: path2, name }) => {
33587
33613
  const { fontSizeList } = useEditorProps();
33588
33614
  const { setFieldValue } = useEditorContext();
33589
- const { selectedNodePath } = useSelectedNode();
33615
+ const selectedNodePath = useSelectedNodePath();
33590
33616
  const element = useElementDefault({ path: path2, type: null });
33591
33617
  const optionsList = useMemo(() => {
33592
33618
  const list = [...fontSizeList || options$1];
@@ -33616,9 +33642,8 @@ const Image$3 = () => {
33616
33642
  return /* @__PURE__ */ React__default.createElement(PopupCard, { content: /* @__PURE__ */ React__default.createElement("div", null, "111") }, /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-img" }));
33617
33643
  };
33618
33644
  const Link$1 = ({ path: path2, name }) => {
33619
- useSlate();
33620
33645
  const ref = useRef(null);
33621
- const { selectedNodePath } = useSelectedNode();
33646
+ const selectedNodePath = useSelectedNodePath();
33622
33647
  const [popupVisible, setPopupVisible] = useState(false);
33623
33648
  const element = useElementDefault({ path: path2, type: null });
33624
33649
  const { setFieldValue } = useEditorContext();
@@ -34023,10 +34048,6 @@ const borderStyleOptions = [
34023
34048
  const Divider = ({ nodePath }) => {
34024
34049
  const { setFieldValue } = useEditorContext();
34025
34050
  const { selectedNode } = useSelectedNode();
34026
- useElementDefault({
34027
- path: nodePath,
34028
- type: (selectedNode == null ? void 0 : selectedNode.type) || null
34029
- });
34030
34051
  const onChangeBorderStyle = (val) => {
34031
34052
  setFieldValue(nodePath, "attributes.border-style", val);
34032
34053
  };
@@ -34066,12 +34087,8 @@ const Spacer = ({ nodePath }) => {
34066
34087
  };
34067
34088
  const Social = ({ nodePath }) => {
34068
34089
  const editor = useSlate();
34069
- const { setFieldValue, getFieldValue } = useEditorContext();
34090
+ const { getFieldValue } = useEditorContext();
34070
34091
  const { selectedNode } = useSelectedNode();
34071
- useElementDefault({
34072
- path: nodePath,
34073
- type: (selectedNode == null ? void 0 : selectedNode.type) || null
34074
- });
34075
34092
  const spacingName = "attributes.spacing";
34076
34093
  const spacing = getFieldValue(nodePath, spacingName);
34077
34094
  useEffect(() => {
@@ -34364,10 +34381,6 @@ const Section = ({ nodePath }) => {
34364
34381
  var _a;
34365
34382
  const { setFieldValue } = useEditorContext();
34366
34383
  const { selectedNode } = useSelectedNode();
34367
- useElementDefault({
34368
- path: nodePath,
34369
- type: (selectedNode == null ? void 0 : selectedNode.type) || null
34370
- });
34371
34384
  const stackOnMobile = ((_a = selectedNode == null ? void 0 : selectedNode.children[0]) == null ? void 0 : _a.type) !== ElementType.STANDARD_GROUP;
34372
34385
  const onChangeStack = useCallback(
34373
34386
  (stackOnMobile2) => {
@@ -34466,7 +34479,8 @@ const ConfigurationToolbarMap = {
34466
34479
  [ElementType.STANDARD_H4]: Text
34467
34480
  };
34468
34481
  const ConfigurationToolbar = () => {
34469
- const { selectedNode, selectedNodePath } = useSelectedNode();
34482
+ const { selectedNode } = useSelectedNode();
34483
+ const selectedNodePath = useSelectedNodePath();
34470
34484
  const nodePath = useMemo(() => selectedNodePath, [selectedNodePath]);
34471
34485
  return useMemo(() => {
34472
34486
  if (!selectedNode || !nodePath)
@@ -35316,7 +35330,7 @@ function AIAssistant({ isCollapsed }) {
35316
35330
  const [visible, setVisible] = useState(false);
35317
35331
  const [refElement, setRefElement] = useState(null);
35318
35332
  const [options2, setOptions] = useState(optionsList);
35319
- const { selectedNodePath } = useSelectedNode();
35333
+ const selectedNodePath = useSelectedNodePath();
35320
35334
  const [loading, setLoading] = useState(false);
35321
35335
  const [rawHTML, setRawHTML] = useState("");
35322
35336
  const { AIAssistant: AIAssistantProps } = useEditorProps();
@@ -35471,7 +35485,8 @@ function AIAssistant({ isCollapsed }) {
35471
35485
  ), /* @__PURE__ */ React__default.createElement("style", null, `.easy-email-pro-ai-assistant .arco-select-view { border: none !important; }`));
35472
35486
  }
35473
35487
  const SourceCodePanel = () => {
35474
- const { selectedNodePath, selectedNode } = useSelectedNode();
35488
+ const { selectedNode } = useSelectedNode();
35489
+ const selectedNodePath = useSelectedNodePath();
35475
35490
  const { setFieldValue } = useEditorContext();
35476
35491
  const { values } = useEditorContext();
35477
35492
  const { universalElementSetting, sourceCodeEditable = true } = useEditorProps();
@@ -36128,46 +36143,48 @@ function ElementStyleGallery({
36128
36143
  title,
36129
36144
  children
36130
36145
  }) {
36131
- const { selectedNodePath } = useSelectedNode();
36132
36146
  const [popupVisible, setPopupVisible] = useState(false);
36133
36147
  const { isDragging } = useContext(DraggingProviderContext);
36148
+ const selectedNodePath = useSelectedNodePath();
36134
36149
  useEffect(() => {
36135
36150
  if (isDragging || selectedNodePath) {
36136
36151
  setPopupVisible(false);
36137
36152
  }
36138
36153
  }, [isDragging, selectedNodePath]);
36139
- const MatchedElement = get(ElementStyles, type);
36140
- if (!MatchedElement) {
36141
- console.warn(`ElementStyles: ${type} not found`);
36142
- return null;
36143
- }
36144
- const renderMenu = () => {
36145
- return /* @__PURE__ */ React__default.createElement(
36146
- Card,
36154
+ return useMemo(() => {
36155
+ const MatchedElement = get(ElementStyles, type);
36156
+ if (!MatchedElement) {
36157
+ console.warn(`ElementStyles: ${type} not found`);
36158
+ return null;
36159
+ }
36160
+ const renderMenu = () => {
36161
+ return /* @__PURE__ */ React__default.createElement(
36162
+ Card,
36163
+ {
36164
+ title: title ? /* @__PURE__ */ React__default.createElement("p", { style: { textAlign: "left" } }, title) : void 0,
36165
+ bodyStyle: { padding: 0 },
36166
+ style: { borderRadius: 4, padding: 0 }
36167
+ },
36168
+ /* @__PURE__ */ React__default.createElement("div", { className: "block-list-menu-item-card-wrapper" }, /* @__PURE__ */ React__default.createElement(FullHeightOverlayScrollbars, { maxHeight: "60vh" }, /* @__PURE__ */ React__default.createElement("div", { className: "block-list-menu-item-card" }, /* @__PURE__ */ React__default.createElement(MatchedElement, null))))
36169
+ );
36170
+ };
36171
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
36172
+ Trigger,
36147
36173
  {
36148
- title: title ? /* @__PURE__ */ React__default.createElement("p", { style: { textAlign: "left" } }, title) : void 0,
36149
- bodyStyle: { padding: 0 },
36150
- style: { borderRadius: 4, padding: 0 }
36151
- },
36152
- /* @__PURE__ */ React__default.createElement("div", { className: "block-list-menu-item-card-wrapper" }, /* @__PURE__ */ React__default.createElement(FullHeightOverlayScrollbars, { maxHeight: "60vh" }, /* @__PURE__ */ React__default.createElement("div", { className: "block-list-menu-item-card" }, /* @__PURE__ */ React__default.createElement(MatchedElement, null))))
36153
- );
36154
- };
36155
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
36156
- Trigger,
36157
- {
36158
- popupVisible,
36159
- popupStyle: {
36160
- transform: "translate(10px)"
36174
+ popupVisible,
36175
+ popupStyle: {
36176
+ transform: "translate(10px)"
36177
+ },
36178
+ popup: renderMenu,
36179
+ trigger: ["click"],
36180
+ clickToClose: true,
36181
+ position: "rt",
36182
+ autoFitPosition: true,
36183
+ onVisibleChange: setPopupVisible
36161
36184
  },
36162
- popup: renderMenu,
36163
- trigger: ["click"],
36164
- clickToClose: true,
36165
- position: "rt",
36166
- autoFitPosition: true,
36167
- onVisibleChange: setPopupVisible
36168
- },
36169
- children
36170
- ));
36185
+ children
36186
+ ));
36187
+ }, [type, children, popupVisible, title]);
36171
36188
  }
36172
36189
  const DragItem = ({
36173
36190
  element,
@@ -36186,15 +36203,15 @@ const index = "";
36186
36203
  const StandaloneElementEditorDrawer = ({ children }) => {
36187
36204
  const [isEditing, setIsEditing] = React__default.useState(false);
36188
36205
  const editor = useSlate();
36206
+ const standaloneElementEditing = useStandaloneElementEditing();
36207
+ const standaloneElementPath = useStandaloneElementPath();
36208
+ const initialStandaloneElement = useStandaloneElement();
36209
+ const standaloneElementSaveButton = useStandaloneElementSaveButton();
36189
36210
  const {
36190
- standaloneElementEditing,
36191
36211
  setStandaloneElementPath,
36192
36212
  setSelectedNodePath,
36193
- standaloneElementPath,
36194
- initialStandaloneElement,
36195
- standaloneElementSaveButton,
36196
36213
  setStandaloneElementSaveButton
36197
- } = useEditorState();
36214
+ } = useEditorActions();
36198
36215
  const standaloneElement = standaloneElementPath && Node.get(editor, standaloneElementPath);
36199
36216
  const hasChanged = useMemo(() => {
36200
36217
  if (!standaloneElementPath || !initialStandaloneElement)
@@ -36339,7 +36356,7 @@ const StandaloneElementEditorDrawer = ({ children }) => {
36339
36356
  ]);
36340
36357
  };
36341
36358
  const StandaloneElementSaveButtonPortal = (props) => {
36342
- const { setStandaloneElementSaveButton } = useEditorState();
36359
+ const { setStandaloneElementSaveButton } = useEditorActions();
36343
36360
  const cacheProps = useEqualState(props);
36344
36361
  useEffect(() => {
36345
36362
  setStandaloneElementSaveButton(cacheProps);
@@ -36402,7 +36419,8 @@ const defaultTd = {
36402
36419
  };
36403
36420
  const useTableInteract = () => {
36404
36421
  const editor = useSlateStatic();
36405
- const { selectedNode, selectedNodePath } = useSelectedNode();
36422
+ const { selectedNode } = useSelectedNode();
36423
+ const selectedNodePath = useSelectedNodePath();
36406
36424
  const { setFieldValue } = useEditorContext();
36407
36425
  const getSelectedList = useEventCallback(() => {
36408
36426
  let contentWindow = null;
@@ -36857,7 +36875,7 @@ const ContextMenu = ({
36857
36875
  /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-table-operation-menu-icon" }, /* @__PURE__ */ React__default.createElement(IconFont, { size: 20, iconName: "icon-delete-selected-rows" })),
36858
36876
  /* @__PURE__ */ React__default.createElement("div", { className: "easy-email-pro-table-operation-menu-text" }, "Delete selected rows")
36859
36877
  )
36860
- ), /* @__PURE__ */ React__default.createElement("style", null, styleText$a)),
36878
+ ), /* @__PURE__ */ React__default.createElement("style", null, styleText$b)),
36861
36879
  document.body
36862
36880
  );
36863
36881
  };
@@ -37022,16 +37040,15 @@ const TableTools = (props) => {
37022
37040
  }, [contentWindow, editor, iframe, props.nodeElement]);
37023
37041
  if (!selected)
37024
37042
  return null;
37025
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("style", null, styleText$b), showContextMenu && /* @__PURE__ */ React__default.createElement(ContextMenu, { position }));
37043
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("style", null, styleText$c), showContextMenu && /* @__PURE__ */ React__default.createElement(ContextMenu, { position }));
37026
37044
  };
37027
37045
  const stopEvent$1 = (ev) => {
37028
37046
  ev.stopPropagation();
37029
37047
  ev.preventDefault();
37030
37048
  };
37031
- const ElementPlaceholder$1 = (props) => {
37032
- const { element, nodeElement, isSelected, isHover, path: path2 } = props;
37033
- const editor = useSlate();
37034
- const { deleteBlock } = useElementInteract();
37049
+ const ElementPlaceholderWrapper = (props) => {
37050
+ const { element, path: path2 } = props;
37051
+ const deleteBlock = useDeleteBlock();
37035
37052
  const onPointerDown = (ev) => {
37036
37053
  ev.preventDefault();
37037
37054
  ev.stopPropagation();
@@ -37065,7 +37082,6 @@ const ElementPlaceholder$1 = (props) => {
37065
37082
  } else if (element.type === ElementType.PLACEHOLDER) {
37066
37083
  renderContent = /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("div", { className: "element-delete" }, /* @__PURE__ */ React__default.createElement(IconDelete, { onPointerDown })), /* @__PURE__ */ React__default.createElement("div", { style: { textAlign: "center" } }, t("Drop content here")));
37067
37084
  }
37068
- let isContentElement = NodeUtils.isContentElement(element);
37069
37085
  const isUniversalElement = NodeUtils.isUniversalElement(element);
37070
37086
  const isStandaloneElement = NodeUtils.isStandaloneElement(element);
37071
37087
  const isUnsetElement = NodeUtils.isUnsetElement(element);
@@ -37097,36 +37113,137 @@ const ElementPlaceholder$1 = (props) => {
37097
37113
  renderContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent, /* @__PURE__ */ React__default.createElement("div", { className: "standalone-element-mask" }), /* @__PURE__ */ React__default.createElement("div", { className: "standalone-element-editing-mask" }));
37098
37114
  }
37099
37115
  }
37100
- let parentElement = void 0;
37101
- try {
37102
- parentElement = Node.get(editor, Path.parent(path2));
37103
- } catch (error2) {
37104
- }
37105
- if (isUnsetElement && parentElement && NodeUtils.isContentElement(parentElement)) {
37106
- isContentElement = true;
37107
- }
37108
37116
  if (NodeUtils.isTable2Element(element)) {
37109
37117
  renderContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent, /* @__PURE__ */ React__default.createElement(TableTools, __spreadValues({}, props)));
37110
37118
  }
37111
- if (isContentElement) {
37112
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, createPortal(
37113
- /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent),
37114
- nodeElement.firstChild
37119
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent, /* @__PURE__ */ React__default.createElement("style", null, styleText$d));
37120
+ };
37121
+ const ElementPlaceholder$1 = (props) => {
37122
+ return useMemo(() => {
37123
+ return /* @__PURE__ */ React__default.createElement(ElementPlaceholderWrapper, __spreadValues({}, props));
37124
+ }, [props]);
37125
+ };
37126
+ const styleText$6 = ".render-with-block-container {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n\n[data-slate-dragover-direction=top] .render-with-block-container.render-with-block-container-is-dragover {\n position: relative;\n padding-top: 60px;\n width: 100%;\n}\n\n[data-slate-dragover-direction=bottom] .render-with-block-container.render-with-block-container-is-dragover {\n position: relative;\n padding-bottom: 60px;\n}\n\n.ElementDragoverPlaceholder-dragover-text-tooltip {\n background-color: var(--drag-color);\n padding: 3px 10px;\n border-radius: 1px;\n height: 15px;\n line-height: 15px;\n font-size: 14px;\n z-index: 2;\n}";
37127
+ const ElementDragoverPlaceholder = ({ element, nodeElement, path: path2 }) => {
37128
+ const [visible, setVisible] = useState(true);
37129
+ const { showInsertTips } = useEditorProps();
37130
+ const direction = useDragoverDirection();
37131
+ const title = BlockManager.getBlockTitle(element);
37132
+ useEffect(() => {
37133
+ let timer;
37134
+ const onScroll = () => {
37135
+ setVisible(false);
37136
+ clearTimeout(timer);
37137
+ timer = setTimeout(() => {
37138
+ setVisible(true);
37139
+ }, 200);
37140
+ };
37141
+ nodeElement.ownerDocument.addEventListener("scroll", onScroll);
37142
+ return () => {
37143
+ var _a;
37144
+ (_a = nodeElement.ownerDocument) == null ? void 0 : _a.removeEventListener("scroll", onScroll);
37145
+ };
37146
+ }, [nodeElement.ownerDocument]);
37147
+ const renderContent = useMemo(() => {
37148
+ if (!visible)
37149
+ return null;
37150
+ let titleTip = t(`Insert to ***`, title);
37151
+ if (direction === "top") {
37152
+ titleTip = t(`Insert before ***`, title);
37153
+ }
37154
+ if (direction === "bottom") {
37155
+ titleTip = t(`Insert after ***`, title);
37156
+ }
37157
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, showInsertTips && /* @__PURE__ */ React__default.createElement("div", { className: "ElementDragoverPlaceholder-dragover-text-tooltip" }, titleTip));
37158
+ }, [visible, title, direction, showInsertTips]);
37159
+ if (NodeUtils.isColumnElement(element)) {
37160
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
37161
+ "div",
37162
+ {
37163
+ style: {
37164
+ position: "absolute",
37165
+ height: "calc(100% - 20px)",
37166
+ border: "2px dashed var(--drag-color)",
37167
+ width: "calc(100% - 20px)",
37168
+ zIndex: 10,
37169
+ left: 10,
37170
+ top: 10
37171
+ }
37172
+ },
37173
+ /* @__PURE__ */ React__default.createElement(
37174
+ "div",
37175
+ {
37176
+ style: {
37177
+ backgroundColor: "var(--drag-color)",
37178
+ opacity: 0.1,
37179
+ width: "100%",
37180
+ height: "100%",
37181
+ position: "absolute",
37182
+ top: 0,
37183
+ left: 0
37184
+ }
37185
+ }
37186
+ ),
37187
+ /* @__PURE__ */ React__default.createElement(
37188
+ "div",
37189
+ {
37190
+ style: {
37191
+ position: "absolute",
37192
+ top: 0,
37193
+ left: 0,
37194
+ fontSize: 12,
37195
+ width: "100%",
37196
+ height: "100%",
37197
+ color: "#fff",
37198
+ display: "flex",
37199
+ alignItems: "center",
37200
+ justifyContent: "center"
37201
+ }
37202
+ },
37203
+ renderContent
37204
+ ),
37205
+ /* @__PURE__ */ React__default.createElement("style", null, styleText$6)
37115
37206
  ));
37116
37207
  }
37117
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, createPortal(
37118
- /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent, /* @__PURE__ */ React__default.createElement("style", null, styleText$c)),
37119
- nodeElement
37208
+ if (NodeUtils.isUnsetElement(element))
37209
+ return null;
37210
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
37211
+ "div",
37212
+ {
37213
+ className: "ElementDragoverPlaceholder",
37214
+ style: {
37215
+ position: "absolute",
37216
+ height: 40,
37217
+ border: "2px dashed var(--drag-color)",
37218
+ width: "100%",
37219
+ zIndex: 10,
37220
+ left: 0,
37221
+ top: direction === "top" ? 10 : void 0,
37222
+ bottom: direction === "bottom" ? 10 : void 0
37223
+ }
37224
+ },
37225
+ /* @__PURE__ */ React__default.createElement(
37226
+ "div",
37227
+ {
37228
+ style: {
37229
+ position: "absolute",
37230
+ backgroundColor: "var(--drag-color)",
37231
+ opacity: 0.1,
37232
+ width: "100%",
37233
+ height: "100%",
37234
+ top: 0,
37235
+ left: 0
37236
+ }
37237
+ }
37238
+ ),
37239
+ /* @__PURE__ */ React__default.createElement("style", null, styleText$6)
37120
37240
  ));
37121
37241
  };
37122
37242
  const styleText$5 = ".dragover-box {\n color: rgb(255, 255, 255);\n text-align: center;\n position: fixed;\n z-index: 999;\n pointer-events: none;\n}\n\n.dragover-box-inner {\n position: absolute;\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\n[data-dragover-direction=top] .dragover-box-inner {\n top: 0;\n}\n\n[data-dragover-direction=bottom] .dragover-box-inner {\n top: 100%;\n}\n\n[data-dragover-direction=middle].dragover-box {\n border: 2px solid var(--drag-color);\n}\n[data-dragover-direction=middle].dragover-box .dragover-box-inner {\n top: 50%;\n transform: translateY(-50%);\n}\n[data-dragover-direction=middle].dragover-box .dragover-box-inner .dragover-line {\n display: none;\n}\n\n.dragover-text-tooltip {\n position: absolute;\n top: 0;\n background-color: var(--drag-color);\n padding: 3px 10px;\n border-radius: 1px;\n height: 15px;\n line-height: 15px;\n font-size: 14px;\n display: inline-block;\n transform: translateY(-50%);\n z-index: 2;\n}\n\n.dragover-line {\n width: 100%;\n position: absolute;\n top: 0;\n border-radius: 3px;\n background: var(--drag-color);\n height: 4px;\n}";
37123
- const ElementDragover$1 = ({ element, nodeElement, path: path2 }) => {
37124
- useEditorState();
37243
+ const ElementDragoverLine = ({ element, nodeElement, path: path2 }) => {
37125
37244
  const [visible, setVisible] = useState(true);
37126
37245
  const { showInsertTips } = useEditorProps();
37127
- const direction = nodeElement.getAttribute(
37128
- "data-slate-dragover-direction"
37129
- );
37246
+ const direction = useDragoverDirection();
37130
37247
  const title = BlockManager.getBlockTitle(element);
37131
37248
  const renderContent = useMemo(() => {
37132
37249
  if (!visible)
@@ -37177,6 +37294,13 @@ const ElementDragover$1 = ({ element, nodeElement, path: path2 }) => {
37177
37294
  nodeElement.ownerDocument.body
37178
37295
  ));
37179
37296
  };
37297
+ const ElementDragover$1 = (props) => {
37298
+ const { dragoverType = "line" } = useEditorProps();
37299
+ if (dragoverType === "line") {
37300
+ return /* @__PURE__ */ React__default.createElement(ElementDragoverLine, __spreadValues({}, props));
37301
+ }
37302
+ return /* @__PURE__ */ React__default.createElement(ElementDragoverPlaceholder, __spreadValues({}, props));
37303
+ };
37180
37304
  const stylesText = ".mergtag-popover {\n position: relative;\n width: 100%;\n}\n\n.easy-email-pro-merge-tag-popover {\n line-height: 1.3;\n background-color: #fff;\n border-top: 1px solid rgb(229, 230, 235);\n z-index: 10;\n padding: 20px;\n font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;\n}\n.easy-email-pro-merge-tag-popover h3 {\n margin: 0;\n font-size: 12px;\n color: rgb(32, 34, 35);\n text-transform: uppercase;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-desc {\n font-size: 14px;\n color: rgb(109, 113, 117);\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-desc-label {\n font-weight: 400;\n line-height: 15px;\n border: 1px solid rgb(109, 113, 117);\n border-radius: 4px;\n text-transform: none;\n letter-spacing: normal;\n position: relative;\n display: flex;\n align-items: center;\n color: rgb(32, 34, 35);\n cursor: text;\n font-size: 14px;\n}\n.easy-email-pro-merge-tag-popover input {\n text-transform: none;\n letter-spacing: normal;\n position: relative;\n z-index: 20;\n display: block;\n flex: 1 1;\n width: 100%;\n min-width: 0;\n min-height: 25px;\n margin: 0;\n padding: 5px 12px;\n background: none;\n border: 1px solid transparent;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n appearance: none;\n caret-color: rgb(32, 34, 35);\n color: rgb(32, 34, 35);\n}\n.easy-email-pro-merge-tag-popover input:focus {\n outline: none;\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-desc-label-count {\n color: rgb(109, 113, 117);\n z-index: 20;\n margin: 0 12px 0 3.5px;\n pointer-events: none;\n text-align: right;\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-desc-label-button {\n font-size: 14px;\n text-align: right;\n margin-top: 10px;\n font-weight: normal;\n margin-bottom: 5px;\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-desc-label-button button {\n color: rgb(var(--primary-6));\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.1s linear;\n cursor: pointer;\n outline: none;\n background-color: transparent;\n border: 1px solid transparent;\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-desc-label-button button:focus {\n color: rgb(var(--primary-6));\n background-color: rgb(242, 243, 245);\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-desc-label-button button:hover {\n color: rgb(var(--primary-6));\n background-color: rgb(242, 243, 245);\n}\n.easy-email-pro-merge-tag-popover .easy-email-pro-merge-tag-popover-container {\n position: relative;\n z-index: 2;\n}";
37181
37305
  const MergetagPopover = ({
37182
37306
  element,
@@ -37228,8 +37352,9 @@ const FullScreenLoading = ({
37228
37352
  };
37229
37353
  const AutoDeselectElement$1 = () => {
37230
37354
  const editor = useSlate();
37231
- const { selectedNodePath, setSelectedNodePath } = useEditorState();
37232
37355
  const { selectedNode } = useSelectedNode();
37356
+ const { setSelectedNodePath } = useEditorActions();
37357
+ const selectedNodePath = useSelectedNodePath();
37233
37358
  useEffect(() => {
37234
37359
  const elementEntry = Editor.above(editor, {
37235
37360
  match: NodeUtils.isElement
@@ -37381,7 +37506,7 @@ const Layout$1 = ({ children, footer, header }) => {
37381
37506
  },
37382
37507
  /* @__PURE__ */ React__default.createElement(SharedComponents.BlockSideBar, { height })
37383
37508
  ),
37384
- /* @__PURE__ */ React__default.createElement("div", { style: { height, minWidth: 800, flex: 1 } }, /* @__PURE__ */ React__default.createElement(SharedComponents.EditorTabs, { header, footer }, /* @__PURE__ */ React__default.createElement(EmailEditor, null, /* @__PURE__ */ React__default.createElement("style", { id: "Retro-CSS" }, styleText$g, RetroStyleText, `
37509
+ /* @__PURE__ */ React__default.createElement("div", { style: { height, minWidth: 800, flex: 1 } }, /* @__PURE__ */ React__default.createElement(SharedComponents.EditorTabs, { header, footer }, /* @__PURE__ */ React__default.createElement(EmailEditor, null, /* @__PURE__ */ React__default.createElement("style", { id: "Retro-CSS" }, styleText$h, RetroStyleText, `
37385
37510
  body {
37386
37511
  --page-width: ${pageDataWidth}px;
37387
37512
  }
@@ -37423,7 +37548,7 @@ const Layout$1 = ({ children, footer, header }) => {
37423
37548
  }
37424
37549
  if (!root2 || !inited)
37425
37550
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, layoutContent);
37426
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, layoutContent, /* @__PURE__ */ React__default.createElement(SharedComponents.HoveringToolbar, null), /* @__PURE__ */ React__default.createElement(SharedComponents.Controller, null), /* @__PURE__ */ React__default.createElement(SharedComponents.Hotkeys, null), /* @__PURE__ */ React__default.createElement(AutoDeselectElement$1, null), /* @__PURE__ */ React__default.createElement("style", null, styleText$g));
37551
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, layoutContent, /* @__PURE__ */ React__default.createElement(SharedComponents.HoveringToolbar, null), /* @__PURE__ */ React__default.createElement(SharedComponents.Controller, null), /* @__PURE__ */ React__default.createElement(SharedComponents.Hotkeys, null), /* @__PURE__ */ React__default.createElement(AutoDeselectElement$1, null), /* @__PURE__ */ React__default.createElement("style", null, styleText$h));
37427
37552
  };
37428
37553
  const Retro = { useCreateConfig: useCreateConfig$1, Layout: Layout$1 };
37429
37554
  const styleText$4 = '[data-slate-hide-cursor=true][data-slate-hover=true] {\n cursor: none;\n}\n[data-slate-hide-cursor=true][data-slate-hover=true]:hover {\n outline: none !important;\n}\n\n[data-slate-hide-cursor=true] [data-slate-hover=true] .element-tools-container {\n opacity: 0;\n}\n\n.element-tools-container {\n position: absolute;\n font-size: 14px;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n outline-offset: -2px;\n outline: 2px dashed transparent;\n outline-offset: -2px;\n pointer-events: none;\n}\n\n.element-tools {\n pointer-events: auto;\n position: absolute;\n top: 0;\n left: 0;\n transform: translate(0, -100%);\n display: flex;\n align-items: center;\n font-size: 14px !important;\n height: 22px;\n padding: 1px 5px;\n line-height: 22px;\n font-weight: normal !important;\n font-style: normal !important;\n}\n.element-tools .element-tools-item {\n font-size: 12px !important;\n line-height: 20px;\n width: 25px;\n display: flex;\n pointer-events: auto;\n cursor: pointer;\n justify-content: center;\n}\n\n.element-tools-bottom {\n top: 100%;\n transform: translate(0, 0);\n}\n\n.element-drag-button {\n pointer-events: auto;\n position: absolute;\n z-index: 4;\n top: 50%;\n right: 0%;\n color: #fff;\n color: rgb(255, 255, 255);\n height: 28px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate(50%, -50%);\n border-radius: 50%;\n cursor: grab;\n}\n.element-drag-button .iconfont {\n cursor: grab !important;\n}\n\nbody [data-slate-hover=true] .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\nbody [data-slate-hover=true] .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\n\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-tools {\n display: none;\n}\n[data-slate-block=page][data-slate-hover=true] > .element-tools-container .element-drag-button {\n display: none;\n}\n\n.element-hover-container {\n position: absolute;\n font-size: 14px;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n outline-offset: -2px;\n outline: 2px solid transparent;\n color: var(--hover-color);\n outline-offset: -2px;\n z-index: 10;\n pointer-events: none;\n font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";\n}\n.element-hover-container .element-hover-tools {\n pointer-events: auto;\n height: calc(100% + 4px);\n position: absolute;\n top: -2px;\n left: 0;\n transform: translate(-100%, 0%);\n display: flex;\n font-size: 14px !important;\n padding: 1px 5px;\n line-height: 22px;\n font-weight: normal !important;\n font-style: normal !important;\n}\n.element-hover-container .element-hover-tools .element-selected-tools-item {\n user-select: none;\n transition: background 20ms ease-in 0s;\n cursor: grab;\n display: flex;\n width: 18px;\n height: 24px;\n border-radius: 3px;\n}\n.element-hover-container .element-hover-tools .element-selected-tools-item .element-selected-tools-item-tooltip {\n display: none;\n opacity: 0;\n}\n.element-hover-container .element-hover-tools .element-selected-tools-item:hover {\n color: var(--hover-color);\n background-color: #efefee;\n}\n.element-hover-container .element-hover-tools .element-selected-tools-item:hover .element-selected-tools-item-tooltip {\n padding: 2px 4px;\n opacity: 1;\n transition: opacity 0.3s;\n position: absolute;\n top: 0px;\n left: 50%;\n transform: translate(-50%, -100%);\n background-color: #0f0f0f;\n color: #e7e7e7;\n display: block;\n font-size: 12px;\n white-space: nowrap;\n border-radius: 5px;\n}\n\n[data-slate-hide-cursor=true] [data-slate-hover=true] {\n cursor: none;\n}\n[data-slate-hide-cursor=true] [data-slate-hover=true]:hover {\n outline: none !important;\n}\n\n[data-slate-hide-cursor=true] .element-tools-container,\n[data-slate-hide-cursor=true] .element-hover-container {\n opacity: 0;\n}';
@@ -39078,7 +39203,7 @@ const Layout = ({ children }) => {
39078
39203
  height: `calc(${height} - 50px)`
39079
39204
  }
39080
39205
  },
39081
- /* @__PURE__ */ React__default.createElement(EmailEditor, null, /* @__PURE__ */ React__default.createElement("style", { id: "Minimalist-CSS" }, styleText$g, minimaliststyleText, blockResizerStyleText, `
39206
+ /* @__PURE__ */ React__default.createElement(EmailEditor, null, /* @__PURE__ */ React__default.createElement("style", { id: "Minimalist-CSS" }, styleText$h, minimaliststyleText, blockResizerStyleText, `
39082
39207
  body {
39083
39208
  --page-width: ${pageDataWidth}px;
39084
39209
  }
@@ -39091,7 +39216,7 @@ const Layout = ({ children }) => {
39091
39216
  ));
39092
39217
  if (!root2 || !inited)
39093
39218
  return /* @__PURE__ */ React__default.createElement(MinimalistProvider, null, layoutContent);
39094
- return /* @__PURE__ */ React__default.createElement(MinimalistProvider, null, layoutContent, controller && /* @__PURE__ */ React__default.createElement(SharedComponents.Controller, null), /* @__PURE__ */ React__default.createElement(SharedComponents.Hotkeys, null), /* @__PURE__ */ React__default.createElement(AutoDeselectElement, null), /* @__PURE__ */ React__default.createElement("style", null, styleText$g, " "));
39219
+ return /* @__PURE__ */ React__default.createElement(MinimalistProvider, null, layoutContent, controller && /* @__PURE__ */ React__default.createElement(SharedComponents.Controller, null), /* @__PURE__ */ React__default.createElement(SharedComponents.Hotkeys, null), /* @__PURE__ */ React__default.createElement(AutoDeselectElement, null), /* @__PURE__ */ React__default.createElement("style", null, styleText$h, " "));
39095
39220
  };
39096
39221
  const Minimalist = { useCreateConfig, Layout };
39097
39222
  export {
@@ -39116,13 +39241,20 @@ export {
39116
39241
  getMergeTagsByType,
39117
39242
  mjmlToJson,
39118
39243
  previewLoadImage,
39244
+ useClearCanvas,
39119
39245
  useColorContext,
39246
+ useCopyBlock,
39247
+ useDeleteBlock,
39120
39248
  useDragging,
39121
39249
  useEditorContext,
39122
39250
  useEditorThemeState,
39123
39251
  useElementDefault,
39124
39252
  useElementInteract,
39125
39253
  useFontFamily,
39254
+ useLastSelectedNode,
39126
39255
  useMinimalistContext,
39256
+ useMoveDown,
39257
+ useMoveUp,
39258
+ useResetSelectedNode,
39127
39259
  useUniversalContent
39128
39260
  };