@uxf/wysiwyg 11.129.0 → 11.130.1

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.
Files changed (148) hide show
  1. package/README.md +9 -7
  2. package/create-all-plugins-with-ui.d.ts +78 -14
  3. package/create-all-plugins-with-ui.js +3 -5
  4. package/create-plugins-with-ui.d.ts +2 -2
  5. package/create-plugins-with-ui.js +25 -30
  6. package/data-format.test.d.ts +1 -0
  7. package/data-format.test.js +132 -0
  8. package/editor-smoke.test.d.ts +1 -0
  9. package/editor-smoke.test.js +9 -0
  10. package/hooks.d.ts +1971 -8
  11. package/hooks.js +18 -11
  12. package/package.json +15 -47
  13. package/plugins/blockquote/create-blockquote-plugin.d.ts +9 -3
  14. package/plugins/blockquote/create-blockquote-plugin.js +31 -3
  15. package/plugins/blockquote/create-blockquote-plugin.test.d.ts +1 -0
  16. package/plugins/blockquote/create-blockquote-plugin.test.js +57 -0
  17. package/plugins/blockquote/types.d.ts +1 -1
  18. package/plugins/blockquote/types.js +2 -2
  19. package/plugins/button/create-button-plugin.d.ts +1 -2
  20. package/plugins/button/create-button-plugin.js +3 -5
  21. package/plugins/button/transforms/is-button-active.js +1 -2
  22. package/plugins/button/transforms/update-button.js +1 -2
  23. package/plugins/constants.test.d.ts +1 -0
  24. package/plugins/constants.test.js +52 -0
  25. package/plugins/embedded/types.d.ts +6 -0
  26. package/plugins/embedded/types.js +2 -0
  27. package/plugins/embedded/utils.d.ts +2 -1
  28. package/plugins/embedded/utils.js +4 -4
  29. package/plugins/embedded/video/create-video-plugin.d.ts +10 -3
  30. package/plugins/embedded/video/create-video-plugin.js +8 -9
  31. package/plugins/embedded/video/create-video-plugin.test.d.ts +1 -0
  32. package/plugins/embedded/video/create-video-plugin.test.js +30 -0
  33. package/plugins/embedded/video/update-video.js +1 -2
  34. package/plugins/exit-break/create-exit-break-plugin.d.ts +8 -3
  35. package/plugins/exit-break/create-exit-break-plugin.js +8 -25
  36. package/plugins/heading/create-headings-plugin.d.ts +13 -4
  37. package/plugins/heading/create-headings-plugin.js +22 -36
  38. package/plugins/heading/create-headings-plugin.test.d.ts +1 -0
  39. package/plugins/heading/create-headings-plugin.test.js +42 -0
  40. package/plugins/highlight/createHighlightPlugin.d.ts +4 -2
  41. package/plugins/highlight/createHighlightPlugin.js +17 -19
  42. package/plugins/highlight/types.d.ts +1 -2
  43. package/plugins/image/create-image-plugin.d.ts +3 -3
  44. package/plugins/image/create-image-plugin.js +58 -91
  45. package/plugins/image/create-image-plugin.test.d.ts +1 -0
  46. package/plugins/image/create-image-plugin.test.js +33 -0
  47. package/plugins/image/transforms/is-image-active.js +1 -2
  48. package/plugins/image/transforms/update-image.js +1 -2
  49. package/plugins/image/types.d.ts +6 -3
  50. package/plugins/image/types.js +2 -2
  51. package/plugins/image/utils/is-image-url.js +2 -2
  52. package/plugins/image/with-paste-image-url.d.ts +5 -5
  53. package/plugins/image/with-paste-image-url.js +29 -25
  54. package/plugins/image/with-paste-image.d.ts +4 -7
  55. package/plugins/image/with-paste-image.js +41 -39
  56. package/plugins/link/constants.d.ts +1 -1
  57. package/plugins/link/constants.js +2 -2
  58. package/plugins/link/create-link-plugin.d.ts +38 -3
  59. package/plugins/link/create-link-plugin.js +9 -7
  60. package/plugins/link/create-link-plugin.test.d.ts +1 -0
  61. package/plugins/link/create-link-plugin.test.js +24 -0
  62. package/plugins/link/floating-link-wrapper.d.ts +14 -7
  63. package/plugins/link/floating-link-wrapper.js +46 -17
  64. package/plugins/link/hooks/index.d.ts +1 -1
  65. package/plugins/link/hooks/index.js +2 -2
  66. package/plugins/link/hooks/use-floating-link-selectors.d.ts +8 -0
  67. package/plugins/link/hooks/use-floating-link-selectors.js +21 -0
  68. package/plugins/link/hooks/use-link-actions.d.ts +991 -8
  69. package/plugins/link/hooks/use-link-actions.js +22 -19
  70. package/plugins/link/hooks/use-link-cancel-on-escape.d.ts +1 -1
  71. package/plugins/link/hooks/use-link-cancel-on-escape.js +2 -2
  72. package/plugins/link/hooks/use-link-submit-on-enter.js +5 -5
  73. package/plugins/link/transforms/get-active-link.d.ts +1 -1
  74. package/plugins/link/transforms/get-active-link.js +3 -5
  75. package/plugins/link/transforms/insert-link.js +9 -9
  76. package/plugins/link/transforms/submit-link.d.ts +2 -3
  77. package/plugins/link/transforms/submit-link.js +13 -13
  78. package/plugins/link/transforms/trigger-link-insert-or-edit.js +2 -2
  79. package/plugins/link/transforms/unwrap-link.js +2 -2
  80. package/plugins/list/constants.d.ts +11 -3
  81. package/plugins/list/constants.js +14 -10
  82. package/plugins/list/create-list-plugin.d.ts +26 -4
  83. package/plugins/list/create-list-plugin.js +13 -12
  84. package/plugins/list/create-list-plugin.test.d.ts +1 -0
  85. package/plugins/list/create-list-plugin.test.js +20 -0
  86. package/plugins/mark-bold/create-bold-plugin.d.ts +3 -3
  87. package/plugins/mark-bold/create-bold-plugin.js +2 -2
  88. package/plugins/mark-bold/types.d.ts +2 -2
  89. package/plugins/mark-bold/types.js +3 -3
  90. package/plugins/mark-code/create-code-plugin.d.ts +7 -3
  91. package/plugins/mark-code/create-code-plugin.js +6 -2
  92. package/plugins/mark-code/types.d.ts +2 -2
  93. package/plugins/mark-code/types.js +3 -3
  94. package/plugins/mark-italic/create-italic-plugin.d.ts +3 -3
  95. package/plugins/mark-italic/create-italic-plugin.js +2 -2
  96. package/plugins/mark-italic/types.d.ts +2 -2
  97. package/plugins/mark-italic/types.js +3 -3
  98. package/plugins/mark-underline/create-underline-plugin.d.ts +3 -3
  99. package/plugins/mark-underline/create-underline-plugin.js +2 -2
  100. package/plugins/mark-underline/types.d.ts +2 -2
  101. package/plugins/mark-underline/types.js +3 -3
  102. package/plugins/marks.test.d.ts +1 -0
  103. package/plugins/marks.test.js +42 -0
  104. package/plugins/node-id/add-ids-to-nodes.d.ts +1 -1
  105. package/plugins/node-id/create-node-id-plugin.d.ts +22 -3
  106. package/plugins/node-id/create-node-id-plugin.js +3 -2
  107. package/plugins/paragraph/create-paragraph-plugin.d.ts +1 -3
  108. package/plugins/paragraph/create-paragraph-plugin.js +3 -4
  109. package/plugins/paragraph/types.d.ts +1 -1
  110. package/plugins/paragraph/types.js +2 -2
  111. package/plugins/structural.test.d.ts +1 -0
  112. package/plugins/structural.test.js +29 -0
  113. package/plugins/trailing-block/create-trailing-block-plugin.d.ts +13 -3
  114. package/plugins/trailing-block/create-trailing-block-plugin.js +8 -2
  115. package/serializers/serialize-to-plaintext.js +2 -2
  116. package/styles/styles.css +1 -0
  117. package/types.d.ts +23 -14
  118. package/ui/floating-link.js +28 -28
  119. package/ui/highlight-mark.d.ts +2 -3
  120. package/ui/highlight-mark.js +4 -1
  121. package/ui/link-element.js +6 -3
  122. package/ui/toolbar/buttons/button-toolbar-button.d.ts +1 -1
  123. package/ui/toolbar/buttons/element-toolbar-button.d.ts +1 -1
  124. package/ui/toolbar/buttons/image-toolbar-button.d.ts +1 -1
  125. package/ui/toolbar/buttons/link-toolbar-button.d.ts +1 -1
  126. package/ui/toolbar/buttons/link-toolbar-button.js +1 -1
  127. package/ui/toolbar/buttons/list-toolbar-button.d.ts +1 -1
  128. package/ui/toolbar/buttons/list-toolbar-button.js +3 -3
  129. package/ui/toolbar/buttons/mark-toolbar-button.d.ts +1 -1
  130. package/ui/toolbar/buttons/undo-redo-button-group.d.ts +1 -1
  131. package/ui/toolbar/buttons/video-toolbar-button.d.ts +1 -1
  132. package/ui/toolbar/types.d.ts +1 -1
  133. package/ui/utils.js +1 -1
  134. package/utils.d.ts +18 -19
  135. package/utils.js +31 -28
  136. package/utils.test.d.ts +1 -0
  137. package/utils.test.js +23 -0
  138. package/wysiwyg-editor.d.ts +2 -2
  139. package/wysiwyg-editor.js +29 -23
  140. package/wysiwyg-editor.test.js +111 -6
  141. package/plugins/image/with-image.d.ts +0 -7
  142. package/plugins/image/with-image.js +0 -19
  143. package/plugins/reset-node/create-reset-node.d.ts +0 -3
  144. package/plugins/reset-node/create-reset-node.js +0 -28
  145. package/plugins/select-on-backspace/create-select-on-backspace-plugin.d.ts +0 -3
  146. package/plugins/select-on-backspace/create-select-on-backspace-plugin.js +0 -14
  147. package/plugins/soft-break/create-soft-break-plugin.d.ts +0 -3
  148. package/plugins/soft-break/create-soft-break-plugin.js +0 -22
@@ -1,3 +1,38 @@
1
- import { LinkPlugin } from "@udecode/plate-link";
2
- import { UxfPlatePlugin } from "../../types";
3
- export declare const createLinkPlugin: () => UxfPlatePlugin<LinkPlugin>;
1
+ /**
2
+ * `key` stays `"a"` (Plate's own) while the stored node type stays `"link"` – the `.configure({ node:
3
+ * { type } })` call is what keeps every existing document readable.
4
+ */
5
+ export declare const createLinkPlugin: () => import("platejs/react").PlatePlugin<import("platejs").PluginConfig<"a", {
6
+ allowedSchemes?: string[];
7
+ dangerouslySkipSanitization?: boolean;
8
+ defaultLinkAttributes?: React.AnchorHTMLAttributes<HTMLAnchorElement>;
9
+ forceSubmit?: boolean;
10
+ keepSelectedTextOnPaste?: boolean;
11
+ rangeBeforeOptions?: import("platejs").EditorBeforeOptions;
12
+ triggerFloatingLinkHotkeys?: string[] | string;
13
+ getLinkUrl?: (prevUrl: string | null) => Promise<string | null>;
14
+ getUrlHref?: (url: string) => string | undefined;
15
+ isUrl?: (text: string) => boolean;
16
+ transformInput?: (url: string) => string | undefined;
17
+ } & {
18
+ isEditing: boolean;
19
+ mode: import("@platejs/link/react").FloatingLinkMode;
20
+ mouseDown: boolean;
21
+ newTab: boolean;
22
+ openEditorId: string | null;
23
+ text: string;
24
+ updated: boolean;
25
+ url: string;
26
+ triggerFloatingLinkHotkeys?: string;
27
+ }, {
28
+ floatingLink: {
29
+ hide: () => void;
30
+ reset: () => void;
31
+ show: (mode: import("@platejs/link/react").FloatingLinkMode, editorId: string) => void;
32
+ };
33
+ link: {
34
+ getAttributes: import("platejs").OmitFirst<(editor: import("platejs").SlateEditor, link: import("platejs").TLinkElement) => Pick<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "target"> & import("platejs").UnknownObject>;
35
+ };
36
+ }, {}, {
37
+ isOpen?: (editorId: string) => boolean;
38
+ }>>;
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createLinkPlugin = void 0;
4
- const plate_link_1 = require("@udecode/plate-link");
4
+ const react_1 = require("@platejs/link/react");
5
5
  const floating_link_1 = require("../../ui/floating-link");
6
6
  const url_helper_1 = require("../../utils/url-helper");
7
7
  const constants_1 = require("./constants");
8
- const createLinkPlugin = () => (0, plate_link_1.createLinkPlugin)({
9
- type: constants_1.LINK_PLUGIN_TYPE,
10
- renderAfterEditable: floating_link_1.FloatingLink,
11
- options: {
12
- isUrl: url_helper_1.UrlHelper.isValid,
13
- },
8
+ /**
9
+ * `key` stays `"a"` (Plate's own) while the stored node type stays `"link"` – the `.configure({ node:
10
+ * { type } })` call is what keeps every existing document readable.
11
+ */
12
+ const createLinkPlugin = () => react_1.LinkPlugin.configure({
13
+ node: { type: constants_1.LINK_PLUGIN_TYPE },
14
+ options: { isUrl: url_helper_1.UrlHelper.isValid },
15
+ render: { afterEditable: floating_link_1.FloatingLink },
14
16
  });
15
17
  exports.createLinkPlugin = createLinkPlugin;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const platejs_1 = require("platejs");
4
+ const url_helper_1 = require("../../utils/url-helper");
5
+ const create_paragraph_plugin_1 = require("../paragraph/create-paragraph-plugin");
6
+ const create_link_plugin_1 = require("./create-link-plugin");
7
+ const editor = (0, platejs_1.createSlateEditor)({ plugins: [(0, create_paragraph_plugin_1.createParagraphPlugin)(), (0, create_link_plugin_1.createLinkPlugin)()] });
8
+ describe("link", () => {
9
+ // The key/type split: Plate's own key is "a", the stored node type has always been "link".
10
+ it("keeps key a and stored type link", () => {
11
+ expect(editor.plugins.a.node.type).toBe("link");
12
+ expect(editor.getType("a")).toBe("link");
13
+ });
14
+ it("is an inline element", () => {
15
+ expect(editor.api.isInline({ children: [{ text: "x" }], type: "link" })).toBe(true);
16
+ });
17
+ it("validates urls with our own helper rather than Plate's", () => {
18
+ expect(editor.getOptions({ key: "a" }).isUrl).toBe(url_helper_1.UrlHelper.isValid);
19
+ });
20
+ // The floating-link state moved from a global zustand store to plugin options. Same field names.
21
+ it.each(["url", "text", "newTab", "isEditing", "mode"])("exposes %s as a plugin option", (option) => {
22
+ expect(editor.getOptions({ key: "a" })).toHaveProperty(option);
23
+ });
24
+ });
@@ -1,11 +1,18 @@
1
- import { HTMLPropsAs } from "@udecode/plate-common";
2
- import { UseVirtualFloatingOptions } from "@udecode/plate-floating";
3
- export type FloatingLinkProps = HTMLPropsAs<"div"> & {
1
+ import { UseVirtualFloatingOptions } from "@platejs/floating";
2
+ import React, { HTMLAttributes } from "react";
3
+ export type FloatingLinkProps = HTMLAttributes<HTMLDivElement> & {
4
4
  floatingOptions?: UseVirtualFloatingOptions;
5
5
  };
6
- export declare const FloatingLinkEditRoot: import("@udecode/plate-utils").Component<FloatingLinkProps>;
7
- export declare const FloatingLinkInsertRoot: import("@udecode/plate-utils").Component<FloatingLinkProps>;
6
+ /**
7
+ * Both wrappers exist to force our own `z-index` token over Plate's hardcoded 50, and to render
8
+ * nothing while the popover is closed. The `z-index` is load-bearing: a positioner is `position:
9
+ * fixed` and so its own stacking context (`.claude/learnings.md`, 2026-08-19).
10
+ *
11
+ * The insert hook reports `hidden`; the edit hook does not, so it is derived from its state.
12
+ */
13
+ export declare function FloatingLinkInsertRoot(props: FloatingLinkProps): React.JSX.Element | null;
14
+ export declare function FloatingLinkEditRoot(props: FloatingLinkProps): React.JSX.Element | null;
8
15
  export declare const FloatingLinkWrapper: {
9
- EditRoot: import("@udecode/plate-utils").Component<FloatingLinkProps>;
10
- InsertRoot: import("@udecode/plate-utils").Component<FloatingLinkProps>;
16
+ EditRoot: typeof FloatingLinkEditRoot;
17
+ InsertRoot: typeof FloatingLinkInsertRoot;
11
18
  };
@@ -1,26 +1,55 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FloatingLinkWrapper = exports.FloatingLinkInsertRoot = exports.FloatingLinkEditRoot = void 0;
4
- const plate_common_1 = require("@udecode/plate-common");
5
- const plate_link_1 = require("@udecode/plate-link");
6
+ exports.FloatingLinkWrapper = void 0;
7
+ exports.FloatingLinkInsertRoot = FloatingLinkInsertRoot;
8
+ exports.FloatingLinkEditRoot = FloatingLinkEditRoot;
9
+ const floating_1 = require("@platejs/floating");
10
+ const react_1 = require("@platejs/link/react");
6
11
  const tw_z_index_1 = require("@uxf/ui/tw-tokens/tw-z-index");
7
- exports.FloatingLinkEditRoot = (0, plate_common_1.createComponentAs)((props) => {
8
- var _a;
9
- const htmlProps = (0, plate_link_1.useFloatingLinkEdit)(props);
10
- if (((_a = htmlProps.style) === null || _a === void 0 ? void 0 : _a.display) === "none") {
12
+ const react_2 = __importDefault(require("react"));
13
+ /**
14
+ * Plate 20's `useVirtualFloatingLink` supplied these; Plate 53 passes only `onOpenChange` and leaves
15
+ * the rest to the consumer, so without them the popover never flips above the selection when there is
16
+ * no room below, sits flush against it, and centres instead of aligning to the start. Values are
17
+ * Plate 20's verbatim.
18
+ */
19
+ const FLOATING_DEFAULTS = {
20
+ middleware: [(0, floating_1.offset)(12), (0, floating_1.flip)({ padding: 96 })],
21
+ placement: "bottom-start",
22
+ };
23
+ /** `floatingOptions` is consumed by the hook and must not reach the DOM. */
24
+ function toDivProps(props) {
25
+ const divProps = { ...props };
26
+ delete divProps.floatingOptions;
27
+ return divProps;
28
+ }
29
+ /**
30
+ * Both wrappers exist to force our own `z-index` token over Plate's hardcoded 50, and to render
31
+ * nothing while the popover is closed. The `z-index` is load-bearing: a positioner is `position:
32
+ * fixed` and so its own stacking context (`.claude/learnings.md`, 2026-08-19).
33
+ *
34
+ * The insert hook reports `hidden`; the edit hook does not, so it is derived from its state.
35
+ */
36
+ function FloatingLinkInsertRoot(props) {
37
+ const state = (0, react_1.useFloatingLinkInsertState)({ floatingOptions: { ...FLOATING_DEFAULTS, ...props.floatingOptions } });
38
+ const root = (0, react_1.useFloatingLinkInsert)(state);
39
+ if (root.hidden) {
11
40
  return null;
12
41
  }
13
- return (0, plate_common_1.createElementAs)("div", { ...htmlProps, style: { ...htmlProps.style, zIndex: tw_z_index_1.twZIndex.modal } });
14
- });
15
- exports.FloatingLinkInsertRoot = (0, plate_common_1.createComponentAs)((props) => {
16
- var _a;
17
- const htmlProps = (0, plate_link_1.useFloatingLinkInsert)(props);
18
- if (((_a = htmlProps.style) === null || _a === void 0 ? void 0 : _a.display) === "none") {
42
+ return (react_2.default.createElement("div", { ...toDivProps(props), ...root.props, ref: root.ref, style: { ...root.props.style, zIndex: tw_z_index_1.twZIndex.modal } }));
43
+ }
44
+ function FloatingLinkEditRoot(props) {
45
+ const state = (0, react_1.useFloatingLinkEditState)({ floatingOptions: { ...FLOATING_DEFAULTS, ...props.floatingOptions } });
46
+ const root = (0, react_1.useFloatingLinkEdit)(state);
47
+ if (state.readOnly || !state.isOpen) {
19
48
  return null;
20
49
  }
21
- return (0, plate_common_1.createElementAs)("div", { ...htmlProps, style: { ...htmlProps.style, zIndex: tw_z_index_1.twZIndex.modal } });
22
- });
50
+ return (react_2.default.createElement("div", { ...toDivProps(props), ...root.props, ref: root.ref, style: { ...root.props.style, zIndex: tw_z_index_1.twZIndex.modal } }));
51
+ }
23
52
  exports.FloatingLinkWrapper = {
24
- EditRoot: exports.FloatingLinkEditRoot,
25
- InsertRoot: exports.FloatingLinkInsertRoot,
53
+ EditRoot: FloatingLinkEditRoot,
54
+ InsertRoot: FloatingLinkInsertRoot,
26
55
  };
@@ -1,4 +1,4 @@
1
- export { useFloatingLinkSelectors } from "@udecode/plate-link";
1
+ export { useFloatingLinkSelectors } from "./use-floating-link-selectors";
2
2
  export { useLinkActions } from "./use-link-actions";
3
3
  export { useLinkCancelOnEscape } from "./use-link-cancel-on-escape";
4
4
  export { useLinkSubmitOnEnter } from "./use-link-submit-on-enter";
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useLinkSubmitOnEnter = exports.useLinkCancelOnEscape = exports.useLinkActions = exports.useFloatingLinkSelectors = void 0;
4
- var plate_link_1 = require("@udecode/plate-link");
5
- Object.defineProperty(exports, "useFloatingLinkSelectors", { enumerable: true, get: function () { return plate_link_1.useFloatingLinkSelectors; } });
4
+ var use_floating_link_selectors_1 = require("./use-floating-link-selectors");
5
+ Object.defineProperty(exports, "useFloatingLinkSelectors", { enumerable: true, get: function () { return use_floating_link_selectors_1.useFloatingLinkSelectors; } });
6
6
  var use_link_actions_1 = require("./use-link-actions");
7
7
  Object.defineProperty(exports, "useLinkActions", { enumerable: true, get: function () { return use_link_actions_1.useLinkActions; } });
8
8
  var use_link_cancel_on_escape_1 = require("./use-link-cancel-on-escape");
@@ -0,0 +1,8 @@
1
+ /** Shim over `LinkPlugin` options, so the three call sites keep the Plate 20 getter-bundle shape. */
2
+ export declare const useFloatingLinkSelectors: () => {
3
+ isEditing: () => boolean;
4
+ mode: () => import("@platejs/link/react").FloatingLinkMode;
5
+ newTab: () => boolean;
6
+ text: () => string;
7
+ url: () => string;
8
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFloatingLinkSelectors = void 0;
4
+ const react_1 = require("@platejs/link/react");
5
+ const react_2 = require("platejs/react");
6
+ /** Shim over `LinkPlugin` options, so the three call sites keep the Plate 20 getter-bundle shape. */
7
+ const useFloatingLinkSelectors = () => {
8
+ const isEditing = (0, react_2.usePluginOption)(react_1.LinkPlugin, "isEditing");
9
+ const url = (0, react_2.usePluginOption)(react_1.LinkPlugin, "url");
10
+ const text = (0, react_2.usePluginOption)(react_1.LinkPlugin, "text");
11
+ const newTab = (0, react_2.usePluginOption)(react_1.LinkPlugin, "newTab");
12
+ const mode = (0, react_2.usePluginOption)(react_1.LinkPlugin, "mode");
13
+ return {
14
+ isEditing: () => isEditing,
15
+ mode: () => mode,
16
+ newTab: () => newTab,
17
+ text: () => text,
18
+ url: () => url,
19
+ };
20
+ };
21
+ exports.useFloatingLinkSelectors = useFloatingLinkSelectors;