@tarviks/lexical-rich-editor 1.3.3 → 1.3.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/dist/index.mjs CHANGED
@@ -7,7 +7,7 @@ import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
7
7
  import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection';
8
8
  import { createCommand, DecoratorNode, COMMAND_PRIORITY_HIGH, TextNode, ElementNode, SELECTION_CHANGE_COMMAND, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, $getSelection, $isRangeSelection, $findMatchingParent, COMMAND_PRIORITY_LOW, KEY_DOWN_COMMAND, $getNodeByKey, $createRangeSelection, $setSelection, $createParagraphNode, $insertNodes, $isRootOrShadowRoot, COMMAND_PRIORITY_EDITOR, PASTE_COMMAND, DRAGSTART_COMMAND, DRAGOVER_COMMAND, DROP_COMMAND, $getRoot, $createTextNode, $isTextNode, $isElementNode, FORMAT_ELEMENT_COMMAND, CLICK_COMMAND, $isNodeSelection, $applyNodeReplacement, FORMAT_TEXT_COMMAND, $isDecoratorNode, $getNearestNodeFromDOMNode, COMMAND_PRIORITY_CRITICAL, REDO_COMMAND, UNDO_COMMAND, getDOMSelection, KEY_ESCAPE_COMMAND, isHTMLElement, getDOMSelectionFromTarget, $isLineBreakNode, SKIP_SELECTION_FOCUS_TAG, createEditor, KEY_ENTER_COMMAND } from 'lexical';
9
9
  import { mergeStyleSets, Stack, css, useTheme, Callout, TextField } from '@fluentui/react';
10
- import { makeStyles, FluentProvider, webLightTheme, Menu, MenuTrigger, MenuPopover, MenuList, MenuGroup, MenuGroupHeader, MenuItem, MenuDivider, Dropdown, Option, Button, ToolbarDivider, MenuItemRadio, Field, Input, MessageBar, MessageBarBody } from '@fluentui/react-components';
10
+ import { makeStyles, FluentProvider, webLightTheme, Menu, MenuTrigger, MenuPopover, MenuList, MenuGroup, MenuGroupHeader, MenuItem, MenuDivider, Dropdown, Option, Button, ToolbarDivider, MenuItemRadio, Field, Input, MessageBar, MessageBarBody, Popover, PopoverTrigger, PopoverSurface } from '@fluentui/react-components';
11
11
  import { CodeHighlightNode, CodeNode, $isCodeHighlightNode } from '@lexical/code';
12
12
  import { LinkNode, AutoLinkNode, $isLinkNode, $isAutoLinkNode, TOGGLE_LINK_COMMAND, $createLinkNode } from '@lexical/link';
13
13
  import { ListNode, ListItemNode, $isListNode, REMOVE_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, $removeList, $insertList, $isListItemNode } from '@lexical/list';
@@ -24,7 +24,7 @@ import { TablePlugin } from '@lexical/react/LexicalTablePlugin';
24
24
  import { HeadingNode, QuoteNode, $isHeadingNode, $createQuoteNode, $createHeadingNode } from '@lexical/rich-text';
25
25
  import { TableNode, TableRowNode, TableCellNode, $isTableSelection, $isTableNode, $isTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $deleteTableRowAtSelection, $deleteTableColumnAtSelection, getDOMCellFromTarget, getTableObserverFromTableElement, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableRowNode, $getTableColumnIndexFromTableCellNode, $createTableNodeWithDimensions } from '@lexical/table';
26
26
  import { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode';
27
- import { ChevronDown12Regular, ArrowUpRegular, RowTripleRegular, ArrowDownRegular, ArrowLeftRegular, ColumnTripleRegular, ArrowRightRegular, DeleteRegular, TextCaseUppercaseFilled, TextCaseLowercaseFilled, TextCaseTitleFilled, TextStrikethroughFilled, TextSubscriptFilled, TextSuperscriptFilled, HighlightAccentFilled, TextBulletListLtrFilled, TextNumberListLtrFilled, DocumentPageBreakRegular, CommentQuoteRegular, TextUnderlineFilled, TextItalicFilled, TextBold24Regular, DocumentRegular, TextAlignLeftFilled, TextAlignCenterFilled, TextAlignRightFilled, TextAlignJustifyFilled, VideoClipRegular, ImageEditRegular, AttachFilled, ImageAddRegular, TableAddRegular, LinkAddRegular, TextColorRegular, PaintBucket16Filled, DismissRegular, CheckmarkRegular, EditRegular, CodeFilled, LinkFilled, Dismiss16Regular } from '@fluentui/react-icons';
27
+ import { ChevronDown12Regular, ArrowUpRegular, RowTripleRegular, ArrowDownRegular, ArrowLeftRegular, ColumnTripleRegular, ArrowRightRegular, DeleteRegular, TextCaseUppercaseFilled, TextCaseLowercaseFilled, TextCaseTitleFilled, TextStrikethroughFilled, TextSubscriptFilled, TextSuperscriptFilled, HighlightAccentFilled, TextBulletListLtrFilled, TextNumberListLtrFilled, DocumentPageBreakRegular, CommentQuoteRegular, TextUnderlineFilled, TextItalicFilled, TextBold24Regular, DocumentRegular, TextAlignLeftFilled, TextAlignCenterFilled, TextAlignRightFilled, TextAlignJustifyFilled, VideoClipRegular, AttachFilled, ImageEditRegular, ImageAddRegular, TableAddRegular, LinkAddRegular, TextColorRegular, PaintBucket16Filled, DismissRegular, CheckmarkRegular, EditRegular, CodeFilled, LinkFilled, Dismiss16Regular } from '@fluentui/react-icons';
28
28
  import { $setBlocksType, $patchStyleText, $isAtNodeEnd, $getSelectionStyleValueForProperty } from '@lexical/selection';
29
29
  import { createPortal } from 'react-dom';
30
30
  import { $generateNodesFromDOM, $generateHtmlFromNodes } from '@lexical/html';
@@ -2487,10 +2487,9 @@ function useFloatingPortalContainer(editor) {
2487
2487
  useEffect(() => {
2488
2488
  const root = editor.getRootElement();
2489
2489
  if (!root) return;
2490
- const panelOrLayer = root.closest(".ms-Panel-main") || root.closest(".ms-Panel") || root.closest(".ms-Layer") || document.body;
2491
2490
  const host = document.createElement("div");
2492
2491
  host.className = "lexical-floating-ui-host";
2493
- panelOrLayer.appendChild(host);
2492
+ document.body.appendChild(host);
2494
2493
  setContainer(host);
2495
2494
  return () => {
2496
2495
  host.remove();
@@ -3497,43 +3496,41 @@ var FloatingLinkEditorPlugin = ({ anchorElem, isLinkEditMode, setIsLinkEditMode
3497
3496
  };
3498
3497
  var AoModal = ({
3499
3498
  isOpen,
3500
- onDismiss,
3499
+ onOpenChange,
3500
+ trigger,
3501
3501
  title,
3502
3502
  maxWidth = 280,
3503
- // Default to a smaller, compact size
3504
3503
  actions,
3505
3504
  children
3506
3505
  }) => {
3507
- const [editor] = useLexicalComposerContext();
3508
- const hostElement = useFloatingPortalContainer(editor);
3509
- if (!isOpen) return null;
3510
- const modalContent = /* @__PURE__ */ jsx("div", { className: "aoModalBackdrop", onClick: onDismiss, children: /* @__PURE__ */ jsxs(
3511
- FluentProvider,
3506
+ return /* @__PURE__ */ jsxs(
3507
+ Popover,
3512
3508
  {
3513
- theme: webLightTheme,
3514
- className: "aoModalWrapper aoModalContainer",
3515
- style: { maxWidth, width: "90vw" },
3516
- onClick: (e) => e.stopPropagation(),
3509
+ open: isOpen,
3510
+ onOpenChange: (_, data) => onOpenChange(data.open),
3511
+ positioning: { position: "below", align: "start" },
3517
3512
  children: [
3518
- /* @__PURE__ */ jsxs("div", { className: "aoModalHeader", children: [
3519
- /* @__PURE__ */ jsx("h2", { className: "aoModalTitle", children: title }),
3520
- /* @__PURE__ */ jsx(
3521
- "button",
3522
- {
3523
- className: "aoModalCloseButton",
3524
- "aria-label": "Close popup",
3525
- onClick: onDismiss,
3526
- children: "\u2715"
3527
- }
3528
- )
3529
- ] }),
3530
- /* @__PURE__ */ jsx("div", { className: "aoModalBody", children }),
3531
- actions && /* @__PURE__ */ jsx("div", { className: "aoModalActions", children: actions })
3513
+ /* @__PURE__ */ jsx(PopoverTrigger, { disableButtonEnhancement: true, children: trigger }),
3514
+ /* @__PURE__ */ jsxs(PopoverSurface, { style: { minWidth: 240, maxWidth, width: "90vw" }, children: [
3515
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: 8 }, children: [
3516
+ /* @__PURE__ */ jsx("h2", { style: { fontSize: 16, fontWeight: 600, margin: 0 }, children: title }),
3517
+ /* @__PURE__ */ jsx(
3518
+ Button,
3519
+ {
3520
+ appearance: "subtle",
3521
+ size: "small",
3522
+ icon: /* @__PURE__ */ jsx(DismissRegular, {}),
3523
+ "aria-label": "Close popup",
3524
+ onClick: () => onOpenChange(false)
3525
+ }
3526
+ )
3527
+ ] }),
3528
+ /* @__PURE__ */ jsx("div", { children }),
3529
+ actions && /* @__PURE__ */ jsx("div", { style: { display: "flex", justifyContent: "flex-end", gap: 8, marginTop: 12 }, children: actions })
3530
+ ] })
3532
3531
  ]
3533
3532
  }
3534
- ) });
3535
- if (!hostElement) return null;
3536
- return createPortal(modalContent, hostElement);
3533
+ );
3537
3534
  };
3538
3535
 
3539
3536
  // src/Plugins/ImagePlugin.tsx
@@ -3670,105 +3667,104 @@ var InsertImageDialog = ({
3670
3667
  };
3671
3668
  reader.readAsDataURL(file);
3672
3669
  };
3673
- return /* @__PURE__ */ jsxs(Fragment, { children: [
3674
- /* @__PURE__ */ jsx(
3675
- Button,
3676
- {
3677
- size: "small",
3678
- title: "Add Image",
3679
- disabled,
3680
- icon: /* @__PURE__ */ jsx(ImageAddRegular, { style: { color: iconColor } }),
3681
- style: {
3682
- background: isOpen && !disabled ? "#ebebeb" : "none",
3683
- border: "none",
3684
- margin: 2,
3685
- opacity: disabled ? 0.55 : 1,
3686
- cursor: disabled ? "not-allowed" : "pointer"
3687
- },
3688
- onClick: () => {
3689
- if (disabled) return;
3690
- setIsOpen((prev) => !prev);
3670
+ return /* @__PURE__ */ jsx(
3671
+ AoModal,
3672
+ {
3673
+ isOpen: disabled ? false : isOpen,
3674
+ onOpenChange: (open) => {
3675
+ if (disabled) return;
3676
+ setIsOpen(open);
3677
+ if (open) {
3691
3678
  setSrc("");
3692
3679
  setAltText("");
3693
3680
  setFileName("");
3694
3681
  }
3695
3682
  },
3696
- "upload-image"
3697
- ),
3698
- /* @__PURE__ */ jsx(
3699
- AoModal,
3700
- {
3701
- isOpen: disabled ? false : isOpen,
3702
- onDismiss: () => !disabled && setIsOpen(false),
3703
- title: "Insert image",
3704
- maxWidth: 340,
3705
- actions: /* @__PURE__ */ jsxs(Fragment, { children: [
3706
- /* @__PURE__ */ jsx(Button, { size: "small", disabled: isDisabled, onClick: () => onClick({ altText, src }), children: "Add" }),
3707
- /* @__PURE__ */ jsx(Button, { size: "small", disabled, onClick: () => setIsOpen(false), children: "Cancel" })
3708
- ] }),
3709
- children: /* @__PURE__ */ jsxs(Stack, { tokens: { childrenGap: 8 }, children: [
3710
- /* @__PURE__ */ jsx(Field, { label: "Upload", size: "small", children: /* @__PURE__ */ jsxs(
3711
- "label",
3712
- {
3713
- style: {
3714
- cursor: disabled ? "not-allowed" : "pointer",
3715
- display: "flex",
3716
- alignItems: "center",
3717
- gap: 8,
3718
- opacity: disabled ? 0.75 : 1
3719
- },
3720
- children: [
3683
+ trigger: /* @__PURE__ */ jsx(
3684
+ Button,
3685
+ {
3686
+ size: "small",
3687
+ title: "Add Image",
3688
+ disabled,
3689
+ icon: /* @__PURE__ */ jsx(ImageAddRegular, { style: { color: iconColor } }),
3690
+ style: {
3691
+ background: isOpen && !disabled ? "#ebebeb" : "none",
3692
+ border: "none",
3693
+ margin: 2,
3694
+ opacity: disabled ? 0.55 : 1,
3695
+ cursor: disabled ? "not-allowed" : "pointer"
3696
+ }
3697
+ },
3698
+ "upload-image"
3699
+ ),
3700
+ title: "Insert image",
3701
+ maxWidth: 340,
3702
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [
3703
+ /* @__PURE__ */ jsx(Button, { size: "small", disabled: isDisabled, onClick: () => onClick({ altText, src }), children: "Add" }),
3704
+ /* @__PURE__ */ jsx(Button, { size: "small", disabled, onClick: () => setIsOpen(false), children: "Cancel" })
3705
+ ] }),
3706
+ children: /* @__PURE__ */ jsxs(Stack, { tokens: { childrenGap: 8 }, children: [
3707
+ /* @__PURE__ */ jsx(Field, { label: "Upload", size: "small", children: /* @__PURE__ */ jsxs(
3708
+ "label",
3709
+ {
3710
+ style: {
3711
+ cursor: disabled ? "not-allowed" : "pointer",
3712
+ display: "flex",
3713
+ alignItems: "center",
3714
+ gap: 8,
3715
+ opacity: disabled ? 0.75 : 1
3716
+ },
3717
+ children: [
3718
+ /* @__PURE__ */ jsx(
3719
+ "input",
3720
+ {
3721
+ type: "file",
3722
+ accept: "image/*",
3723
+ style: { display: "none" },
3724
+ disabled,
3725
+ onChange: loadImage
3726
+ },
3727
+ "inline-image-upload"
3728
+ ),
3729
+ /* @__PURE__ */ jsxs(Stack, { horizontal: true, children: [
3721
3730
  /* @__PURE__ */ jsx(
3722
- "input",
3731
+ AttachFilled,
3723
3732
  {
3724
- type: "file",
3725
- accept: "image/*",
3726
- style: { display: "none" },
3727
- disabled,
3728
- onChange: loadImage
3729
- },
3730
- "inline-image-upload"
3731
- ),
3732
- /* @__PURE__ */ jsxs(Stack, { horizontal: true, children: [
3733
- /* @__PURE__ */ jsx(
3734
- AttachFilled,
3735
- {
3736
- style: {
3737
- fontSize: "16px",
3738
- color: disabled ? "var(--colorNeutralForegroundDisabled, #A6A6A6)" : "#808080",
3739
- marginTop: 2
3740
- }
3733
+ style: {
3734
+ fontSize: "16px",
3735
+ color: disabled ? "var(--colorNeutralForegroundDisabled, #A6A6A6)" : "#808080",
3736
+ marginTop: 2
3741
3737
  }
3742
- ),
3743
- !fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: "Upload File" })
3744
- ] }),
3745
- fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: fileName })
3746
- ]
3747
- }
3748
- ) }),
3749
- fileSizeError && /* @__PURE__ */ jsx(MessageBar, { intent: "error", style: { marginTop: 4 }, children: /* @__PURE__ */ jsx(MessageBarBody, { children: fileSizeError }) }),
3750
- /* @__PURE__ */ jsx(Field, { label: "Alt Text", size: "small", children: /* @__PURE__ */ jsx(
3751
- Input,
3752
- {
3753
- placeholder: "Alt text",
3754
- appearance: "underline",
3755
- disabled,
3756
- onChange: (_, d) => setAltText(d.value),
3757
- value: altText
3758
- }
3759
- ) }),
3760
- selectedValue === "URL" && /* @__PURE__ */ jsx(
3761
- InsertImageByURL,
3762
- {
3763
- disabled,
3764
- setIsOpen: (open) => setIsOpen(open),
3765
- onClick: (payload) => onClick(payload)
3766
- }
3767
- )
3768
- ] })
3769
- }
3770
- )
3771
- ] });
3738
+ }
3739
+ ),
3740
+ !fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: "Upload File" })
3741
+ ] }),
3742
+ fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: fileName })
3743
+ ]
3744
+ }
3745
+ ) }),
3746
+ fileSizeError && /* @__PURE__ */ jsx(MessageBar, { intent: "error", style: { marginTop: 4 }, children: /* @__PURE__ */ jsx(MessageBarBody, { children: fileSizeError }) }),
3747
+ /* @__PURE__ */ jsx(Field, { label: "Alt Text", size: "small", children: /* @__PURE__ */ jsx(
3748
+ Input,
3749
+ {
3750
+ placeholder: "Alt text",
3751
+ appearance: "underline",
3752
+ disabled,
3753
+ onChange: (_, d) => setAltText(d.value),
3754
+ value: altText
3755
+ }
3756
+ ) }),
3757
+ selectedValue === "URL" && /* @__PURE__ */ jsx(
3758
+ InsertImageByURL,
3759
+ {
3760
+ disabled,
3761
+ setIsOpen: (open) => setIsOpen(open),
3762
+ onClick: (payload) => onClick(payload)
3763
+ }
3764
+ )
3765
+ ] })
3766
+ }
3767
+ );
3772
3768
  };
3773
3769
  var ImagesPlugin = ({ captionsEnabled }) => {
3774
3770
  const [editor] = useLexicalComposerContext();
@@ -4018,132 +4014,131 @@ var InsertInlineImageDialog = ({
4018
4014
  setFileName("");
4019
4015
  setFileSizeError(null);
4020
4016
  };
4021
- return /* @__PURE__ */ jsxs(Fragment, { children: [
4022
- /* @__PURE__ */ jsx(
4023
- Button,
4024
- {
4025
- size: "small",
4026
- title: "Add Inline Image",
4027
- disabled,
4028
- icon: /* @__PURE__ */ jsx(ImageEditRegular, { style: { color: iconColor } }),
4029
- style: {
4030
- background: isOpen && !disabled ? "#ebebeb" : "none",
4031
- border: "none",
4032
- margin: 2,
4033
- opacity: disabled ? 0.55 : 1,
4034
- cursor: disabled ? "not-allowed" : "pointer"
4035
- },
4036
- onClick: () => {
4037
- if (disabled) return;
4038
- setIsOpen((prev) => !prev);
4017
+ return /* @__PURE__ */ jsx(
4018
+ AoModal,
4019
+ {
4020
+ isOpen: disabled ? false : isOpen,
4021
+ onOpenChange: (open) => {
4022
+ if (disabled) return;
4023
+ setIsOpen(open);
4024
+ if (open) {
4039
4025
  setAltText("");
4040
4026
  setSrc("");
4041
4027
  setFileName("");
4042
4028
  }
4043
4029
  },
4044
- "upload-inline-image"
4045
- ),
4046
- /* @__PURE__ */ jsx(
4047
- AoModal,
4048
- {
4049
- isOpen: disabled ? false : isOpen,
4050
- onDismiss: () => !disabled && setIsOpen(false),
4051
- title: "Insert inline image",
4052
- maxWidth: 360,
4053
- actions: /* @__PURE__ */ jsxs(Fragment, { children: [
4054
- /* @__PURE__ */ jsx(
4055
- Button,
4056
- {
4057
- size: "small",
4058
- disabled: isDisabled,
4059
- onClick: handleOnClick,
4060
- children: "Add"
4061
- },
4062
- "file-inline-upload-btn"
4063
- ),
4064
- /* @__PURE__ */ jsx(
4065
- Button,
4066
- {
4067
- size: "small",
4068
- disabled,
4069
- onClick: () => setIsOpen(false),
4070
- children: "Cancel"
4030
+ trigger: /* @__PURE__ */ jsx(
4031
+ Button,
4032
+ {
4033
+ size: "small",
4034
+ title: "Add Inline Image",
4035
+ disabled,
4036
+ icon: /* @__PURE__ */ jsx(ImageEditRegular, { style: { color: iconColor } }),
4037
+ style: {
4038
+ background: isOpen && !disabled ? "#ebebeb" : "none",
4039
+ border: "none",
4040
+ margin: 2,
4041
+ opacity: disabled ? 0.55 : 1,
4042
+ cursor: disabled ? "not-allowed" : "pointer"
4043
+ }
4044
+ },
4045
+ "upload-inline-image"
4046
+ ),
4047
+ title: "Insert inline image",
4048
+ maxWidth: 360,
4049
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [
4050
+ /* @__PURE__ */ jsx(
4051
+ Button,
4052
+ {
4053
+ size: "small",
4054
+ disabled: isDisabled,
4055
+ onClick: handleOnClick,
4056
+ children: "Add"
4057
+ },
4058
+ "file-inline-upload-btn"
4059
+ ),
4060
+ /* @__PURE__ */ jsx(
4061
+ Button,
4062
+ {
4063
+ size: "small",
4064
+ disabled,
4065
+ onClick: () => setIsOpen(false),
4066
+ children: "Cancel"
4067
+ },
4068
+ "file-inline-upload-cancel"
4069
+ )
4070
+ ] }),
4071
+ children: /* @__PURE__ */ jsxs(Stack, { tokens: { childrenGap: 8 }, children: [
4072
+ /* @__PURE__ */ jsx(Field, { label: "Upload", size: "small", children: /* @__PURE__ */ jsxs(
4073
+ "label",
4074
+ {
4075
+ style: {
4076
+ cursor: disabled ? "not-allowed" : "pointer",
4077
+ display: "flex",
4078
+ alignItems: "center",
4079
+ gap: 8,
4080
+ opacity: disabled ? 0.75 : 1
4071
4081
  },
4072
- "file-inline-upload-cancel"
4073
- )
4074
- ] }),
4075
- children: /* @__PURE__ */ jsxs(Stack, { tokens: { childrenGap: 8 }, children: [
4076
- /* @__PURE__ */ jsx(Field, { label: "Upload", size: "small", children: /* @__PURE__ */ jsxs(
4077
- "label",
4078
- {
4079
- style: {
4080
- cursor: disabled ? "not-allowed" : "pointer",
4081
- display: "flex",
4082
- alignItems: "center",
4083
- gap: 8,
4084
- opacity: disabled ? 0.75 : 1
4085
- },
4086
- children: [
4082
+ children: [
4083
+ /* @__PURE__ */ jsx(
4084
+ "input",
4085
+ {
4086
+ type: "file",
4087
+ accept: "image/*",
4088
+ style: { display: "none" },
4089
+ disabled,
4090
+ onChange: loadImage
4091
+ },
4092
+ "inline-image-upload"
4093
+ ),
4094
+ /* @__PURE__ */ jsxs(Stack, { horizontal: true, children: [
4087
4095
  /* @__PURE__ */ jsx(
4088
- "input",
4096
+ AttachFilled,
4089
4097
  {
4090
- type: "file",
4091
- accept: "image/*",
4092
- style: { display: "none" },
4093
- disabled,
4094
- onChange: loadImage
4095
- },
4096
- "inline-image-upload"
4097
- ),
4098
- /* @__PURE__ */ jsxs(Stack, { horizontal: true, children: [
4099
- /* @__PURE__ */ jsx(
4100
- AttachFilled,
4101
- {
4102
- style: {
4103
- fontSize: "16px",
4104
- color: disabled ? "var(--colorNeutralForegroundDisabled, #A6A6A6)" : "#808080",
4105
- marginTop: 2
4106
- }
4098
+ style: {
4099
+ fontSize: "16px",
4100
+ color: disabled ? "var(--colorNeutralForegroundDisabled, #A6A6A6)" : "#808080",
4101
+ marginTop: 2
4107
4102
  }
4108
- ),
4109
- !fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: "Upload File" })
4110
- ] }),
4111
- fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: fileName })
4112
- ]
4113
- }
4114
- ) }),
4115
- /* @__PURE__ */ jsx(Field, { label: "Position", size: "small", children: /* @__PURE__ */ jsxs(
4116
- Dropdown,
4117
- {
4118
- className: styles.alignDropdown,
4119
- disabled,
4120
- value: position === "full" ? "Full" : position === "right" ? "Right" : "Left",
4121
- selectedOptions: [position ?? "left"],
4122
- listbox: { style: { width: "120px" } },
4123
- root: { style: { borderBottom: "1px solid black" } },
4124
- onOptionSelect: (_, data) => setPosition(data.optionValue),
4125
- children: [
4126
- /* @__PURE__ */ jsx(Option, { value: "left", children: "Left" }, "left"),
4127
- /* @__PURE__ */ jsx(Option, { value: "right", children: "Right" }, "right"),
4128
- /* @__PURE__ */ jsx(Option, { value: "full", children: "Full" }, "full")
4129
- ]
4130
- }
4131
- ) }),
4132
- fileSizeError && /* @__PURE__ */ jsx(MessageBar, { intent: "error", style: { marginTop: 4 }, children: /* @__PURE__ */ jsx(MessageBarBody, { children: fileSizeError }) }),
4133
- /* @__PURE__ */ jsx(Field, { label: "Alt Text", size: "small", children: /* @__PURE__ */ jsx(
4134
- Input,
4135
- {
4136
- placeholder: "Alt text",
4137
- appearance: "underline",
4138
- disabled,
4139
- value: altText,
4140
- onChange: (_, d) => setAltText(d.value)
4141
- }
4142
- ) })
4143
- ] })
4144
- }
4145
- )
4146
- ] });
4103
+ }
4104
+ ),
4105
+ !fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: "Upload File" })
4106
+ ] }),
4107
+ fileName && /* @__PURE__ */ jsx("span", { style: { fontSize: 12, color: "#808080" }, children: fileName })
4108
+ ]
4109
+ }
4110
+ ) }),
4111
+ /* @__PURE__ */ jsx(Field, { label: "Position", size: "small", children: /* @__PURE__ */ jsxs(
4112
+ Dropdown,
4113
+ {
4114
+ className: styles.alignDropdown,
4115
+ disabled,
4116
+ value: position === "full" ? "Full" : position === "right" ? "Right" : "Left",
4117
+ selectedOptions: [position ?? "left"],
4118
+ listbox: { style: { width: "120px" } },
4119
+ root: { style: { borderBottom: "1px solid black" } },
4120
+ onOptionSelect: (_, data) => setPosition(data.optionValue),
4121
+ children: [
4122
+ /* @__PURE__ */ jsx(Option, { value: "left", children: "Left" }, "left"),
4123
+ /* @__PURE__ */ jsx(Option, { value: "right", children: "Right" }, "right"),
4124
+ /* @__PURE__ */ jsx(Option, { value: "full", children: "Full" }, "full")
4125
+ ]
4126
+ }
4127
+ ) }),
4128
+ fileSizeError && /* @__PURE__ */ jsx(MessageBar, { intent: "error", style: { marginTop: 4 }, children: /* @__PURE__ */ jsx(MessageBarBody, { children: fileSizeError }) }),
4129
+ /* @__PURE__ */ jsx(Field, { label: "Alt Text", size: "small", children: /* @__PURE__ */ jsx(
4130
+ Input,
4131
+ {
4132
+ placeholder: "Alt text",
4133
+ appearance: "underline",
4134
+ disabled,
4135
+ value: altText,
4136
+ onChange: (_, d) => setAltText(d.value)
4137
+ }
4138
+ ) })
4139
+ ] })
4140
+ }
4141
+ );
4147
4142
  };
4148
4143
  var InlineImagePlugin = () => {
4149
4144
  const [editor] = useLexicalComposerContext();
@@ -6644,76 +6639,75 @@ var TableItemPlugin = ({ disabled }) => {
6644
6639
  setColumns("");
6645
6640
  setIsOpen(false);
6646
6641
  };
6647
- return /* @__PURE__ */ jsxs(Fragment, { children: [
6648
- /* @__PURE__ */ jsx(
6649
- Button,
6650
- {
6651
- size: "small",
6652
- title: "Add table",
6653
- disabled,
6654
- icon: /* @__PURE__ */ jsx(TableAddRegular, { style: { color: iconColor } }),
6655
- style: {
6656
- background: isOpen && !disabled ? "#ebebeb" : "none",
6657
- border: "none",
6658
- margin: 2,
6659
- opacity: disabled ? 0.55 : 1,
6660
- cursor: disabled ? "not-allowed" : "pointer"
6661
- },
6662
- onClick: () => {
6663
- if (disabled) return;
6664
- setIsOpen((prev) => !prev);
6642
+ return /* @__PURE__ */ jsx(
6643
+ AoModal,
6644
+ {
6645
+ isOpen: disabled ? false : isOpen,
6646
+ onOpenChange: (open) => {
6647
+ if (disabled) return;
6648
+ setIsOpen(open);
6649
+ if (open) {
6665
6650
  setRows("");
6666
6651
  setColumns("");
6667
6652
  }
6668
6653
  },
6669
- "insert-table-nodes"
6670
- ),
6671
- /* @__PURE__ */ jsx(
6672
- AoModal,
6673
- {
6674
- isOpen: disabled ? false : isOpen,
6675
- onDismiss: () => !disabled && setIsOpen(false),
6676
- title: "Insert table",
6677
- maxWidth: 300,
6678
- actions: /* @__PURE__ */ jsxs(Fragment, { children: [
6679
- /* @__PURE__ */ jsx(
6680
- Button,
6681
- {
6682
- size: "small",
6683
- appearance: "primary",
6684
- disabled: disabled || !rows || !columns,
6685
- onClick: onAddTable,
6686
- children: "Add"
6687
- }
6688
- ),
6689
- /* @__PURE__ */ jsx(Button, { size: "small", disabled, onClick: () => setIsOpen(false), children: "Cancel" })
6690
- ] }),
6691
- children: /* @__PURE__ */ jsxs(Stack, { tokens: { childrenGap: 8 }, children: [
6692
- /* @__PURE__ */ jsx(Field, { label: "Rows", size: "small", children: /* @__PURE__ */ jsx(
6693
- Input,
6694
- {
6695
- autoFocus: !disabled,
6696
- value: rows,
6697
- placeholder: "Rows",
6698
- appearance: "underline",
6699
- disabled,
6700
- onChange: (_, v) => setRows(v.value)
6701
- }
6702
- ) }),
6703
- /* @__PURE__ */ jsx(Field, { label: "Columns", size: "small", children: /* @__PURE__ */ jsx(
6704
- Input,
6705
- {
6706
- value: columns,
6707
- placeholder: "Columns",
6708
- appearance: "underline",
6709
- disabled,
6710
- onChange: (_, v) => setColumns(v.value)
6711
- }
6712
- ) })
6713
- ] })
6714
- }
6715
- )
6716
- ] });
6654
+ trigger: /* @__PURE__ */ jsx(
6655
+ Button,
6656
+ {
6657
+ size: "small",
6658
+ title: "Add table",
6659
+ disabled,
6660
+ icon: /* @__PURE__ */ jsx(TableAddRegular, { style: { color: iconColor } }),
6661
+ style: {
6662
+ background: isOpen && !disabled ? "#ebebeb" : "none",
6663
+ border: "none",
6664
+ margin: 2,
6665
+ opacity: disabled ? 0.55 : 1,
6666
+ cursor: disabled ? "not-allowed" : "pointer"
6667
+ }
6668
+ },
6669
+ "insert-table-nodes"
6670
+ ),
6671
+ title: "Insert table",
6672
+ maxWidth: 300,
6673
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [
6674
+ /* @__PURE__ */ jsx(
6675
+ Button,
6676
+ {
6677
+ size: "small",
6678
+ appearance: "primary",
6679
+ disabled: disabled || !rows || !columns,
6680
+ onClick: onAddTable,
6681
+ children: "Add"
6682
+ }
6683
+ ),
6684
+ /* @__PURE__ */ jsx(Button, { size: "small", disabled, onClick: () => setIsOpen(false), children: "Cancel" })
6685
+ ] }),
6686
+ children: /* @__PURE__ */ jsxs(Stack, { tokens: { childrenGap: 8 }, children: [
6687
+ /* @__PURE__ */ jsx(Field, { label: "Rows", size: "small", children: /* @__PURE__ */ jsx(
6688
+ Input,
6689
+ {
6690
+ autoFocus: !disabled,
6691
+ value: rows,
6692
+ placeholder: "Rows",
6693
+ appearance: "underline",
6694
+ disabled,
6695
+ onChange: (_, v) => setRows(v.value)
6696
+ }
6697
+ ) }),
6698
+ /* @__PURE__ */ jsx(Field, { label: "Columns", size: "small", children: /* @__PURE__ */ jsx(
6699
+ Input,
6700
+ {
6701
+ value: columns,
6702
+ placeholder: "Columns",
6703
+ appearance: "underline",
6704
+ disabled,
6705
+ onChange: (_, v) => setColumns(v.value)
6706
+ }
6707
+ ) })
6708
+ ] })
6709
+ }
6710
+ );
6717
6711
  };
6718
6712
  var YoutubeUploadPlugin = ({ disabled }) => {
6719
6713
  const [url, setURL] = useState("");
@@ -6733,54 +6727,51 @@ var YoutubeUploadPlugin = ({ disabled }) => {
6733
6727
  setURL("");
6734
6728
  setIsOpen(false);
6735
6729
  };
6736
- return /* @__PURE__ */ jsxs(Fragment, { children: [
6737
- /* @__PURE__ */ jsx(
6738
- Button,
6739
- {
6740
- title: "Add youtube URL",
6741
- size: "small",
6742
- disabled,
6743
- icon: /* @__PURE__ */ jsx(VideoClipRegular, { style: { color: iconColor } }),
6744
- style: {
6745
- background: isOpen && !disabled ? "#ebebeb" : "none",
6746
- border: "none",
6747
- margin: 2,
6748
- opacity: disabled ? 0.55 : 1,
6749
- cursor: disabled ? "not-allowed" : "pointer"
6750
- },
6751
- onClick: () => {
6752
- if (disabled) return;
6753
- setIsOpen((prev) => !prev);
6754
- setURL("");
6755
- }
6730
+ return /* @__PURE__ */ jsx(
6731
+ AoModal,
6732
+ {
6733
+ isOpen: disabled ? false : isOpen,
6734
+ onOpenChange: (open) => {
6735
+ if (disabled) return;
6736
+ setIsOpen(open);
6737
+ if (open) setURL("");
6756
6738
  },
6757
- "upload-video"
6758
- ),
6759
- /* @__PURE__ */ jsx(
6760
- AoModal,
6761
- {
6762
- isOpen: disabled ? false : isOpen,
6763
- onDismiss: () => !disabled && setIsOpen(false),
6764
- title: "Embed YouTube video",
6765
- maxWidth: 320,
6766
- actions: /* @__PURE__ */ jsxs(Fragment, { children: [
6767
- /* @__PURE__ */ jsx(Button, { size: "small", disabled: disabled || !url, onClick: onHandleEmbeded, children: "Add" }),
6768
- /* @__PURE__ */ jsx(Button, { size: "small", disabled, onClick: () => setIsOpen(false), children: "Cancel" })
6769
- ] }),
6770
- children: /* @__PURE__ */ jsx(Stack, { tokens: { childrenGap: 8 }, children: /* @__PURE__ */ jsx(Field, { label: "URL", size: "small", children: /* @__PURE__ */ jsx(
6771
- Input,
6772
- {
6773
- autoFocus: !disabled,
6774
- disabled,
6775
- value: url,
6776
- appearance: "underline",
6777
- placeholder: "Add Youtube video URL",
6778
- onChange: (_, v) => setURL(v.value)
6739
+ trigger: /* @__PURE__ */ jsx(
6740
+ Button,
6741
+ {
6742
+ title: "Add youtube URL",
6743
+ size: "small",
6744
+ disabled,
6745
+ icon: /* @__PURE__ */ jsx(VideoClipRegular, { style: { color: iconColor } }),
6746
+ style: {
6747
+ background: isOpen && !disabled ? "#ebebeb" : "none",
6748
+ border: "none",
6749
+ margin: 2,
6750
+ opacity: disabled ? 0.55 : 1,
6751
+ cursor: disabled ? "not-allowed" : "pointer"
6779
6752
  }
6780
- ) }) })
6781
- }
6782
- )
6783
- ] });
6753
+ },
6754
+ "upload-video"
6755
+ ),
6756
+ title: "Embed YouTube video",
6757
+ maxWidth: 320,
6758
+ actions: /* @__PURE__ */ jsxs(Fragment, { children: [
6759
+ /* @__PURE__ */ jsx(Button, { size: "small", disabled: disabled || !url, onClick: onHandleEmbeded, children: "Add" }),
6760
+ /* @__PURE__ */ jsx(Button, { size: "small", disabled, onClick: () => setIsOpen(false), children: "Cancel" })
6761
+ ] }),
6762
+ children: /* @__PURE__ */ jsx(Stack, { tokens: { childrenGap: 8 }, children: /* @__PURE__ */ jsx(Field, { label: "URL", size: "small", children: /* @__PURE__ */ jsx(
6763
+ Input,
6764
+ {
6765
+ autoFocus: !disabled,
6766
+ disabled,
6767
+ value: url,
6768
+ appearance: "underline",
6769
+ placeholder: "Add Youtube video URL",
6770
+ onChange: (_, v) => setURL(v.value)
6771
+ }
6772
+ ) }) })
6773
+ }
6774
+ );
6784
6775
  };
6785
6776
  var TextAlphaListLtrFilled = ({ style }) => /* @__PURE__ */ jsxs("svg", { width: "1em", height: "1em", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", style, children: [
6786
6777
  /* @__PURE__ */ jsx("path", { d: "M8.75 4a.75.75 0 1 0 0 1.5h7.5a.75.75 0 0 0 0-1.5h-7.5Z" }),