easy-email-extensions 3.0.5 → 3.0.9

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.
@@ -11,4 +11,4 @@ export interface CheckboxGroupProps extends ArcoCheckboxGroupProps<any> {
11
11
  checkboxStyle?: Partial<React.CSSProperties>;
12
12
  vertical?: boolean;
13
13
  }
14
- export declare function ChexkBoxGroup(props: CheckboxGroupProps): JSX.Element;
14
+ export declare function CheckBoxGroup(props: CheckboxGroupProps): JSX.Element;
@@ -3,6 +3,5 @@ export interface InlineTextProps {
3
3
  idx: string;
4
4
  children?: React.ReactNode;
5
5
  onChange: (content: string) => void;
6
- mutators: Record<string, (...args: any[]) => any>;
7
6
  }
8
- export declare function InlineText({ idx, onChange, children, mutators: { setFieldTouched }, }: InlineTextProps): JSX.Element | null;
7
+ export declare function InlineText({ idx, onChange, children }: InlineTextProps): JSX.Element | null;
@@ -17,4 +17,4 @@ export interface EnhancerProps<T> extends Partial<FieldProps<T, any>> {
17
17
  wrapper?: boolean;
18
18
  size?: InputProps['size'];
19
19
  }
20
- export default function enhancer<P>(Component: any, changeAdapter: (e: any) => any): (props: EnhancerProps<P> & Omit<P, 'value' | 'onChange' | 'mutators'>) => JSX.Element;
20
+ export default function enhancer<P, C extends (...rest: any[]) => any = any>(Component: any, changeAdapter: C): (props: EnhancerProps<P> & Omit<P, 'value' | 'onChange' | 'mutators'>) => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function RenderCount(): JSX.Element;
package/lib/index2.js CHANGED
@@ -55,10 +55,10 @@ var __async = (__this, __arguments, generator) => {
55
55
  };
56
56
  import * as React from "react";
57
57
  import React__default, { useCallback, useState, useRef, useEffect, useMemo, Children, isValidElement, cloneElement, createContext, useContext, Component, memo, forwardRef, useLayoutEffect, createRef, useImperativeHandle, PureComponent, useReducer, createElement, Suspense } from "react";
58
- import { IconFont, Stack as Stack$6, TextStyle, getBlockNodeByIdx, useBlock, getShadowRoot, FIXED_CONTAINER_ID, getEditorRoot, useEditorProps, useFocusIdx, useActiveTab, scrollBlockEleIntoView, useEditorContext, useHoverIdx, DATA_ATTRIBUTE_DROP_CONTAINER, BlockAvatarWrapper, ActiveTabKeys } from "easy-email-editor";
58
+ import { IconFont, Stack as Stack$6, TextStyle, getBlockNodeByIdx, useBlock, getEditNode, getShadowRoot, FIXED_CONTAINER_ID, getEditContent, getEditorRoot, useEditorProps, useFocusIdx, useActiveTab, scrollBlockEleIntoView, useEditorContext, useHoverIdx, DATA_ATTRIBUTE_DROP_CONTAINER, BlockAvatarWrapper, ActiveTabKeys } from "easy-email-editor";
59
59
  import { BasicType, ImageManager, getIndexByIdx, getSiblingIdx, BlockManager, getPageIdx, getChildIdx, createBlockDataByType, getParentByIdx, getValueByIdx, MjmlToJson, JsonToMjml, getParentIdx, getNodeTypeFromClassName } from "easy-email-core";
60
60
  import { ReactSortable } from "react-sortablejs";
61
- import { useForm as useForm$1, useField, Form as Form$3, version as version$2 } from "react-final-form";
61
+ import { useField, Field, useForm as useForm$1, Form as Form$3, version as version$2, useFormState } from "react-final-form";
62
62
  import ReactDOM, { findDOMNode, createPortal } from "react-dom";
63
63
  var arco = "";
64
64
  const title = "_title_1gyaq_1";
@@ -5715,14 +5715,16 @@ function BlockTree(props) {
5715
5715
  if (node) {
5716
5716
  node.classList.remove(styles$8.treeNodeSelected);
5717
5717
  }
5718
- const selectedNode = eleRef.querySelector(`[${DATA_ATTRIBUTE_ID}="${selectedId}"]`);
5719
- if (selectedNode) {
5720
- selectedNode.classList.add(styles$8.treeNodeSelected);
5721
- selectedNode.scrollIntoView({
5722
- block: "center",
5723
- behavior: "smooth"
5724
- });
5725
- }
5718
+ setTimeout(() => {
5719
+ const selectedNode = eleRef.querySelector(`[${DATA_ATTRIBUTE_ID}="${selectedId}"]`);
5720
+ if (selectedNode) {
5721
+ selectedNode.classList.add(styles$8.treeNodeSelected);
5722
+ selectedNode.scrollIntoView({
5723
+ block: "center",
5724
+ behavior: "smooth"
5725
+ });
5726
+ }
5727
+ }, 50);
5726
5728
  }
5727
5729
  }, [eleRef, selectedId]);
5728
5730
  const onDragStart = useCallback((evt, sortable, store) => {
@@ -38481,75 +38483,88 @@ function enhancer(Component2, changeAdapter) {
38481
38483
  "wrapper",
38482
38484
  "debounceTime"
38483
38485
  ]);
38484
- const id = useMemo(() => {
38485
- return `enhancer-${primaryId++}`;
38486
- }, []);
38487
- const { change, mutators } = useForm$1();
38488
38486
  const {
38489
- input: { value, onBlur: onBlur3 },
38490
- meta: { touched, error: error2 }
38487
+ input: { value, onChange }
38491
38488
  } = useField(name, {
38492
38489
  validate: validate3
38493
38490
  });
38494
- const onFieldChange = useCallback(lodash.exports.debounce((e) => {
38495
- const newVal = onChangeAdapter ? onChangeAdapter(changeAdapter(e)) : changeAdapter(e);
38496
- change(name, newVal);
38497
- onBlur3();
38498
- }), [change, name, onBlur3, onChangeAdapter]);
38499
- if (!wrapper2)
38500
- return /* @__PURE__ */ React__default.createElement(Component2, __spreadProps(__spreadValues({}, rest), {
38501
- mutators,
38491
+ const [currentValue, setCurrentValue] = useState(value);
38492
+ const debounceCallbackChange = useCallback(lodash.exports.debounce((val) => {
38493
+ onChange(val);
38494
+ }, 100, {
38495
+ maxWait: 500
38496
+ }), []);
38497
+ useEffect(() => {
38498
+ setCurrentValue(value);
38499
+ }, [value]);
38500
+ const id = useMemo(() => {
38501
+ return `enhancer-${primaryId++}`;
38502
+ }, []);
38503
+ return /* @__PURE__ */ React__default.createElement(Field, {
38504
+ name,
38505
+ validate: validate3
38506
+ }, ({ input: { onBlur: onBlur3 }, meta: { touched, error: error2 } }) => {
38507
+ const onFieldChange = useCallback((e) => {
38508
+ const newVal = onChangeAdapter ? onChangeAdapter(changeAdapter(e)) : changeAdapter(e);
38509
+ setCurrentValue(newVal);
38510
+ debounceCallbackChange(newVal);
38511
+ onBlur3();
38512
+ }, [onBlur3, onChangeAdapter, debounceCallbackChange]);
38513
+ if (!wrapper2)
38514
+ return /* @__PURE__ */ React__default.createElement(Component2, __spreadProps(__spreadValues({}, rest), {
38515
+ id,
38516
+ name,
38517
+ checked: valueAdapter ? valueAdapter(currentValue) : currentValue,
38518
+ value: valueAdapter ? valueAdapter(currentValue) : currentValue,
38519
+ onChange: onFieldChange
38520
+ }));
38521
+ return /* @__PURE__ */ React__default.createElement(Form.Item, {
38522
+ noStyle: true,
38523
+ validateStatus: touched && error2 ? "error" : void 0,
38524
+ help: touched && error2
38525
+ }, /* @__PURE__ */ React__default.createElement(Stack$6, {
38526
+ vertical: true,
38527
+ spacing: "extraTight"
38528
+ }, /* @__PURE__ */ React__default.createElement(Stack$6, {
38529
+ spacing: inline ? void 0 : "extraTight",
38530
+ wrap: false,
38531
+ vertical: !inline,
38532
+ alignment: alignment ? alignment : inline ? "center" : void 0,
38533
+ distribution
38534
+ }, /* @__PURE__ */ React__default.createElement(Stack$6.Item, null, /* @__PURE__ */ React__default.createElement("label", {
38535
+ className: labelHidden2 ? styles$5["label-hidden"] : void 0,
38536
+ htmlFor: id
38537
+ }, /* @__PURE__ */ React__default.createElement("span", {
38538
+ style: { whiteSpace: "pre" }
38539
+ }, required && /* @__PURE__ */ React__default.createElement("span", {
38540
+ style: { color: "#ff4d4f" }
38541
+ }, "* "), /* @__PURE__ */ React__default.createElement(TextStyle, {
38542
+ size: size === "small" ? "smallest" : "small"
38543
+ }, label)))), /* @__PURE__ */ React__default.createElement(Stack$6.Item, {
38544
+ fill: inline
38545
+ }, /* @__PURE__ */ React__default.createElement(Component2, __spreadProps(__spreadValues({
38546
+ size
38547
+ }, rest), {
38502
38548
  id,
38503
38549
  name,
38504
- checked: valueAdapter ? valueAdapter(value) : value,
38505
- value: valueAdapter ? valueAdapter(value) : value,
38550
+ checked: valueAdapter ? valueAdapter(currentValue) : currentValue,
38551
+ value: valueAdapter ? valueAdapter(currentValue) : currentValue,
38506
38552
  onChange: onFieldChange
38507
- }));
38508
- return /* @__PURE__ */ React__default.createElement(Form.Item, {
38509
- noStyle: true,
38510
- validateStatus: touched && error2 ? "error" : void 0,
38511
- help: touched && error2
38512
- }, /* @__PURE__ */ React__default.createElement(Stack$6, {
38513
- vertical: true,
38514
- spacing: "extraTight"
38515
- }, /* @__PURE__ */ React__default.createElement(Stack$6, {
38516
- spacing: inline ? void 0 : "extraTight",
38517
- wrap: false,
38518
- vertical: !inline,
38519
- alignment: alignment ? alignment : inline ? "center" : void 0,
38520
- distribution
38521
- }, /* @__PURE__ */ React__default.createElement(Stack$6.Item, null, /* @__PURE__ */ React__default.createElement("label", {
38522
- className: labelHidden2 ? styles$5["label-hidden"] : void 0,
38523
- htmlFor: id
38524
- }, /* @__PURE__ */ React__default.createElement("span", {
38525
- style: { whiteSpace: "pre" }
38526
- }, required && /* @__PURE__ */ React__default.createElement("span", {
38527
- style: { color: "#ff4d4f" }
38528
- }, "* "), /* @__PURE__ */ React__default.createElement(TextStyle, {
38529
- size: size === "small" ? "smallest" : "small"
38530
- }, label)))), /* @__PURE__ */ React__default.createElement(Stack$6.Item, {
38531
- fill: inline
38532
- }, /* @__PURE__ */ React__default.createElement(Component2, __spreadProps(__spreadValues({
38533
- size
38534
- }, rest), {
38535
- mutators,
38536
- id,
38537
- name,
38538
- checked: valueAdapter ? valueAdapter(value) : value,
38539
- value: valueAdapter ? valueAdapter(value) : value,
38540
- onChange: onFieldChange
38541
- })))), /* @__PURE__ */ React__default.createElement("div", {
38542
- className: styles$5.helperText
38543
- }, /* @__PURE__ */ React__default.createElement("small", null, helpText))));
38553
+ })))), /* @__PURE__ */ React__default.createElement("div", {
38554
+ className: styles$5.helperText
38555
+ }, /* @__PURE__ */ React__default.createElement("small", null, helpText))));
38556
+ });
38544
38557
  };
38545
38558
  }
38546
38559
  function Input(props) {
38547
38560
  const { quickchange, value = "", onKeyDown: onPropsKeyDown } = props;
38548
38561
  const onChange = useCallback((val) => {
38549
38562
  props.onChange(val);
38550
- }, [props]);
38563
+ }, [props.onChange]);
38551
38564
  const onKeyDown = useCallback((ev) => {
38552
- onPropsKeyDown == null ? void 0 : onPropsKeyDown(ev);
38565
+ if (onPropsKeyDown) {
38566
+ onPropsKeyDown == null ? void 0 : onPropsKeyDown(ev);
38567
+ }
38553
38568
  if (quickchange) {
38554
38569
  let step = 0;
38555
38570
  if (ev.key === "ArrowUp") {
@@ -38560,6 +38575,7 @@ function Input(props) {
38560
38575
  }
38561
38576
  if (step) {
38562
38577
  if (/^\d+/.test(value)) {
38578
+ ev.preventDefault();
38563
38579
  onChange(String(value).replace(/^(\d+)/, (_, match) => {
38564
38580
  return (Number(match) + step).toString();
38565
38581
  }));
@@ -38572,7 +38588,7 @@ function Input(props) {
38572
38588
  onKeyDown
38573
38589
  }));
38574
38590
  }
38575
- function ChexkBoxGroup(props) {
38591
+ function CheckBoxGroup(props) {
38576
38592
  const _a = props, { vertical = false } = _a, rest = __objRest(_a, ["vertical"]);
38577
38593
  return /* @__PURE__ */ React__default.createElement(Checkbox$1.Group, {
38578
38594
  style: lodash.exports.merge({ width: "100%" }, rest.style),
@@ -38635,33 +38651,10 @@ function awaitForElement$1(idx) {
38635
38651
  });
38636
38652
  return promiseObj;
38637
38653
  }
38638
- function getEditNode(node) {
38639
- if (!node.classList)
38640
- return null;
38641
- if (node.classList.contains("node-type-text")) {
38642
- return node.querySelector("div");
38643
- }
38644
- if (node.classList.contains("node-type-button")) {
38645
- return node.querySelector("a") || node.querySelector("p");
38646
- }
38647
- return null;
38648
- }
38649
- function getEditContent(node) {
38650
- var _a, _b;
38651
- if (node.classList.contains("node-type-text")) {
38652
- return ((_a = getEditNode(node)) == null ? void 0 : _a.innerHTML) || "";
38653
- }
38654
- if (node.classList.contains("node-type-button")) {
38655
- return ((_b = getEditNode(node)) == null ? void 0 : _b.innerText) || "";
38656
- }
38657
- return "";
38658
- }
38659
- function InlineText({
38660
- idx,
38661
- onChange,
38662
- children,
38663
- mutators: { setFieldTouched }
38664
- }) {
38654
+ function InlineText({ idx, onChange, children }) {
38655
+ const {
38656
+ mutators: { setFieldTouched }
38657
+ } = useForm$1();
38665
38658
  const [isFocus, setIsFocus] = useState(false);
38666
38659
  const [textContainer, setTextContainer] = useState(null);
38667
38660
  useField(idx);
@@ -38752,8 +38745,9 @@ function InlineText({
38752
38745
  }
38753
38746
  function AutoComplete(props) {
38754
38747
  const options2 = useMemo(() => {
38748
+ const selectedValue = (props.value || "").toLowerCase();
38755
38749
  return props.options.filter((item2) => {
38756
- return lodash.exports.isString(item2.value) && item2.value.toLowerCase().startsWith(props.value.toLowerCase()) || lodash.exports.isString(item2.label) && item2.label.toLowerCase().startsWith(props.value.toLowerCase());
38750
+ return lodash.exports.isString(item2.value) && item2.value.toLowerCase().startsWith(selectedValue) || lodash.exports.isString(item2.label) && item2.label.toLowerCase().startsWith(selectedValue);
38757
38751
  }).map((item2) => __spreadProps(__spreadValues({}, item2), { name: item2.label }));
38758
38752
  }, [props.options, props.value]);
38759
38753
  return /* @__PURE__ */ React__default.createElement(ArcoAutoComplete, __spreadProps(__spreadValues({}, props), {
@@ -38869,14 +38863,16 @@ function Link$1(props) {
38869
38863
  trigger: "click",
38870
38864
  color: "#fff",
38871
38865
  position: "tl",
38872
- content: /* @__PURE__ */ React__default.createElement(Stack$6, {
38866
+ content: /* @__PURE__ */ React__default.createElement("div", {
38867
+ style: { color: "#333" }
38868
+ }, /* @__PURE__ */ React__default.createElement(Stack$6, {
38873
38869
  vertical: true,
38874
38870
  spacing: "tight"
38875
38871
  }, /* @__PURE__ */ React__default.createElement(Stack$6.Item, null), /* @__PURE__ */ React__default.createElement(SearchField, {
38876
38872
  name: "link",
38877
38873
  label: "Link",
38878
38874
  labelHidden: true,
38879
- enterButton: "Apply",
38875
+ searchButton: "Apply",
38880
38876
  placeholder: "https://www.example.com",
38881
38877
  onSearch: () => handleSubmit()
38882
38878
  }), /* @__PURE__ */ React__default.createElement(Stack$6, null, /* @__PURE__ */ React__default.createElement(SwitchField, {
@@ -38891,7 +38887,7 @@ function Link$1(props) {
38891
38887
  checkedText: "off",
38892
38888
  uncheckedText: "on",
38893
38889
  inline: true
38894
- })))
38890
+ }))))
38895
38891
  }), /* @__PURE__ */ React__default.createElement(Button$4, {
38896
38892
  title: "Link",
38897
38893
  size: "mini",
@@ -39288,8 +39284,8 @@ const RichTextField = (props) => {
39288
39284
  }, props));
39289
39285
  };
39290
39286
  const TextField = enhancer(Input, (value) => value);
39291
- const SearchField = enhancer(Input$5.Search, (e) => e.target.value);
39292
- const TextAreaField = enhancer(Input$5.TextArea, (e) => e.target.value);
39287
+ const SearchField = enhancer(Input$5.Search, (val) => val);
39288
+ const TextAreaField = enhancer(Input$5.TextArea, (val) => val);
39293
39289
  const NumberField = enhancer(InputNumber$1, (e) => e);
39294
39290
  const SliderField = enhancer(Slider$2, (e) => e);
39295
39291
  const ColorPickerField = enhancer(ColorPicker, (e) => e);
@@ -39300,7 +39296,7 @@ const AutoCompleteField = enhancer(AutoComplete, (e) => e);
39300
39296
  const RadioGroupField = enhancer(RadioGroup, (value) => value);
39301
39297
  const SwitchField = enhancer(Switch$1, (e) => e);
39302
39298
  const DatePickerField = enhancer(DatePicker$1, (date) => date);
39303
- const CheckboxField = enhancer(ChexkBoxGroup, (e) => e);
39299
+ const CheckboxField = enhancer(CheckBoxGroup, (e) => e);
39304
39300
  const EditTabField = enhancer(EditTab, (e) => e);
39305
39301
  const InlineTextField = enhancer(InlineText, (value) => value);
39306
39302
  const AddToCollection = ({ visible, setVisible }) => {
@@ -39986,32 +39982,39 @@ function Page() {
39986
39982
  }
39987
39983
  function Padding(props = {}) {
39988
39984
  const { title: title2 = "Padding", attributeName = "padding" } = props;
39989
- const { focusBlock: focusBlock2 } = useBlock();
39985
+ const { focusBlock: focusBlock2, change } = useBlock();
39990
39986
  const { focusIdx: focusIdx2 } = useFocusIdx();
39991
- const defaultConfig = useMemo(() => focusBlock2 && createBlockDataByType(focusBlock2.type), [focusBlock2]);
39992
- const getVal = useCallback((index2) => {
39993
- return () => {
39994
- var _a, _b;
39995
- return ((_a = focusBlock2 == null ? void 0 : focusBlock2.attributes[attributeName]) == null ? void 0 : _a.split(" ")[index2]) || ((_b = defaultConfig == null ? void 0 : defaultConfig.attributes[attributeName]) == null ? void 0 : _b.split(" ")[index2]);
39996
- };
39997
- }, [attributeName, defaultConfig == null ? void 0 : defaultConfig.attributes, focusBlock2 == null ? void 0 : focusBlock2.attributes]);
39998
- const setVal = useCallback((index2) => {
39999
- return (newVal) => {
40000
- if (newVal === "") {
40001
- newVal = "0px";
40002
- }
40003
- const vals = [
40004
- getVal(0)(),
40005
- getVal(1)(),
40006
- getVal(2)(),
40007
- getVal(3)()
40008
- ];
40009
- vals[index2] = newVal;
40010
- return vals.join(" ");
39987
+ const type = focusBlock2 && focusBlock2.type;
39988
+ const defaultConfig = useMemo(() => type ? createBlockDataByType(type) : void 0, [type]);
39989
+ const paddingValue = focusBlock2 == null ? void 0 : focusBlock2.attributes[attributeName];
39990
+ const defaultPaddingValue = defaultConfig == null ? void 0 : defaultConfig.attributes[attributeName];
39991
+ const paddingList = paddingValue == null ? void 0 : paddingValue.split(" ");
39992
+ const defaultPaddingList = defaultPaddingValue == null ? void 0 : defaultPaddingValue.split(" ");
39993
+ const paddingFormValues = useMemo(() => {
39994
+ const paddingList2 = paddingValue == null ? void 0 : paddingValue.split(" ");
39995
+ const defaultPaddingList2 = defaultPaddingValue == null ? void 0 : defaultPaddingValue.split(" ");
39996
+ const top = paddingList2 ? paddingList2[0] : (defaultPaddingList2 == null ? void 0 : defaultPaddingList2[0]) || "";
39997
+ const right = paddingList2 ? paddingList2[1] : (defaultPaddingList2 == null ? void 0 : defaultPaddingList2[1]) || "";
39998
+ const bottom = paddingList2 ? paddingList2[2] : (defaultPaddingList2 == null ? void 0 : defaultPaddingList2[2]) || "";
39999
+ const left = paddingList2 ? paddingList2[3] : (defaultPaddingList2 == null ? void 0 : defaultPaddingList2[3]) || "";
40000
+ return {
40001
+ top,
40002
+ left,
40003
+ bottom,
40004
+ right
40011
40005
  };
40012
- }, [getVal]);
40013
- return useMemo(() => {
40014
- return /* @__PURE__ */ React__default.createElement(Stack$6, {
40006
+ }, [paddingList, defaultPaddingList]);
40007
+ const onChancePadding = useCallback((val) => {
40008
+ change(focusIdx2 + `.attributes[${attributeName}]`, val);
40009
+ }, [focusIdx2, attributeName]);
40010
+ return /* @__PURE__ */ React__default.createElement(Form$3, {
40011
+ initialValues: paddingFormValues,
40012
+ subscription: { submitting: true, pristine: true },
40013
+ enableReinitialize: true,
40014
+ onSubmit: () => {
40015
+ }
40016
+ }, () => {
40017
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Stack$6, {
40015
40018
  vertical: true,
40016
40019
  spacing: "extraTight"
40017
40020
  }, /* @__PURE__ */ React__default.createElement(TextStyle, {
@@ -40023,18 +40026,14 @@ function Padding(props = {}) {
40023
40026
  }, /* @__PURE__ */ React__default.createElement(TextField, {
40024
40027
  label: /* @__PURE__ */ React__default.createElement("span", null, "Top\xA0"),
40025
40028
  quickchange: true,
40026
- name: `${focusIdx2}.attributes.${attributeName}`,
40027
- valueAdapter: getVal(0),
40028
- onChangeAdapter: setVal(0),
40029
+ name: "top",
40029
40030
  inline: true
40030
40031
  })), /* @__PURE__ */ React__default.createElement(Stack$6.Item, {
40031
40032
  fill: true
40032
40033
  }, /* @__PURE__ */ React__default.createElement(TextField, {
40033
40034
  label: "Bottom",
40034
40035
  quickchange: true,
40035
- name: `${focusIdx2}.attributes.${attributeName}`,
40036
- valueAdapter: getVal(2),
40037
- onChangeAdapter: setVal(2),
40036
+ name: "bottom",
40038
40037
  inline: true
40039
40038
  }))), /* @__PURE__ */ React__default.createElement(Stack$6, {
40040
40039
  wrap: false
@@ -40043,22 +40042,29 @@ function Padding(props = {}) {
40043
40042
  }, /* @__PURE__ */ React__default.createElement(TextField, {
40044
40043
  label: /* @__PURE__ */ React__default.createElement("span", null, "Left"),
40045
40044
  quickchange: true,
40046
- name: `${focusIdx2}.attributes.${attributeName}`,
40047
- valueAdapter: getVal(3),
40048
- onChangeAdapter: setVal(3),
40045
+ name: "left",
40049
40046
  inline: true
40050
40047
  })), /* @__PURE__ */ React__default.createElement(Stack$6.Item, {
40051
40048
  fill: true
40052
40049
  }, /* @__PURE__ */ React__default.createElement(TextField, {
40053
40050
  label: /* @__PURE__ */ React__default.createElement("span", null, "Right\xA0"),
40054
40051
  quickchange: true,
40055
- name: `${focusIdx2}.attributes.${attributeName}`,
40056
- valueAdapter: getVal(1),
40057
- onChangeAdapter: setVal(1),
40052
+ name: "right",
40058
40053
  inline: true
40059
- }))));
40060
- }, [attributeName, focusIdx2, getVal, setVal, title2]);
40054
+ })))), /* @__PURE__ */ React__default.createElement(PaddingChangeWrapper, {
40055
+ onChange: onChancePadding
40056
+ }));
40057
+ });
40061
40058
  }
40059
+ const PaddingChangeWrapper = (props) => {
40060
+ const {
40061
+ values: { top, right, bottom, left }
40062
+ } = useFormState();
40063
+ useEffect(() => {
40064
+ props.onChange([top, right, bottom, left].join(" "));
40065
+ }, [top, right, bottom, left]);
40066
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null);
40067
+ };
40062
40068
  function BackgroundColor({
40063
40069
  title: title2 = "Background color"
40064
40070
  }) {
@@ -44229,7 +44235,7 @@ function Toolbar({
44229
44235
  style: {
44230
44236
  position: "absolute",
44231
44237
  left: 0,
44232
- top: direction === "top" ? 0 : "100%",
44238
+ top: direction === "top" || isPage ? 0 : "100%",
44233
44239
  fontSize: 14,
44234
44240
  zIndex: 3,
44235
44241
  color: "#000",
@@ -44240,7 +44246,7 @@ function Toolbar({
44240
44246
  }, /* @__PURE__ */ React__default.createElement("div", {
44241
44247
  style: {
44242
44248
  color: "#ffffff",
44243
- transform: direction === "top" ? "translateY(-100%)" : void 0,
44249
+ transform: direction !== "top" || isPage ? void 0 : "translateY(-100%)",
44244
44250
  display: "flex"
44245
44251
  }
44246
44252
  }, /* @__PURE__ */ React__default.createElement("div", {
@@ -44347,7 +44353,7 @@ function FocusTooltip() {
44347
44353
  return null;
44348
44354
  return BlockManager.getBlockByType(focusBlock2.type);
44349
44355
  }, [focusBlock2]);
44350
- if (isPage || !block2 || !blockNode)
44356
+ if (!block2 || !blockNode)
44351
44357
  return null;
44352
44358
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, createPortal(/* @__PURE__ */ React__default.createElement("div", {
44353
44359
  style: {