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 +434 -302
- package/lib/typings/hooks/index.d.ts +1 -1
- package/lib/typings/hooks/useElementInteract.d.ts +12 -0
- package/lib/typings/themes/Retro/components/ElementInteract/ElementDragover/Line/index.d.ts +2 -0
- package/lib/typings/themes/Retro/components/ElementInteract/ElementDragover/Placeholder/index.d.ts +2 -0
- package/lib/typings/typings/custom-types.d.ts +1 -0
- package/package.json +1 -1
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,
|
|
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$
|
|
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$
|
|
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
|
-
|
|
728
|
-
} =
|
|
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
|
-
|
|
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
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
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
|
-
|
|
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
|
-
|
|
853
|
-
|
|
854
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
1642
|
-
const
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
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$
|
|
2162
|
-
|
|
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$
|
|
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$
|
|
2183
|
-
|
|
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$
|
|
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
|
|
2194
|
-
|
|
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$
|
|
2202
|
-
const styleText$
|
|
2203
|
-
const styleText$
|
|
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
|
|
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
|
-
|
|
2551
|
-
|
|
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
|
|
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
|
|
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 } =
|
|
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
|
-
|
|
7187
|
-
|
|
7188
|
-
|
|
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
|
|
7444
|
-
const { setUniversalElementPath } =
|
|
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
|
-
|
|
7499
|
-
|
|
7500
|
-
|
|
7501
|
-
|
|
7502
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
7866
|
-
|
|
7867
|
-
|
|
7868
|
-
|
|
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
|
-
|
|
8353
|
-
|
|
8354
|
-
|
|
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
|
|
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$
|
|
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
|
|
14389
|
-
const
|
|
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
|
|
14502
|
-
const
|
|
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
|
|
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 } =
|
|
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$
|
|
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
|
|
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
|
|
30074
|
+
const activeTab = useActiveTab();
|
|
30075
|
+
const { setActiveTab } = useEditorActions();
|
|
30024
30076
|
const { setFieldValue } = useEditorContext();
|
|
30025
30077
|
const [count, setCount] = useState(0);
|
|
30026
|
-
const { selectedNode
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
32091
|
-
|
|
32092
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
32656
|
-
const styleText$
|
|
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$
|
|
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$
|
|
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 } =
|
|
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$
|
|
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$
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 {
|
|
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
|
|
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
|
|
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 {
|
|
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
|
-
|
|
36140
|
-
|
|
36141
|
-
|
|
36142
|
-
|
|
36143
|
-
|
|
36144
|
-
|
|
36145
|
-
|
|
36146
|
-
|
|
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
|
-
|
|
36149
|
-
|
|
36150
|
-
|
|
36151
|
-
|
|
36152
|
-
|
|
36153
|
-
|
|
36154
|
-
|
|
36155
|
-
|
|
36156
|
-
|
|
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
|
-
|
|
36163
|
-
|
|
36164
|
-
|
|
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
|
-
} =
|
|
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 } =
|
|
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
|
|
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$
|
|
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$
|
|
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
|
|
37032
|
-
const { element,
|
|
37033
|
-
const
|
|
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
|
-
|
|
37112
|
-
|
|
37113
|
-
|
|
37114
|
-
|
|
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
|
-
|
|
37118
|
-
|
|
37119
|
-
|
|
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
|
|
37124
|
-
useEditorState();
|
|
37243
|
+
const ElementDragoverLine = ({ element, nodeElement, path: path2 }) => {
|
|
37125
37244
|
const [visible, setVisible] = useState(true);
|
|
37126
37245
|
const { showInsertTips } = useEditorProps();
|
|
37127
|
-
const direction =
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
};
|