@payloadcms/richtext-lexical 0.1.0-beta.0
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/LICENSE.md +22 -0
- package/dist/cell/index.d.ts +6 -0
- package/dist/cell/index.d.ts.map +1 -0
- package/dist/cell/index.js +86 -0
- package/dist/field/Field.d.ts +6 -0
- package/dist/field/Field.d.ts.map +1 -0
- package/dist/field/Field.js +138 -0
- package/dist/field/features/BlockQuote/index.d.ts +3 -0
- package/dist/field/features/BlockQuote/index.d.ts.map +1 -0
- package/dist/field/features/BlockQuote/index.js +82 -0
- package/dist/field/features/BlockQuote/markdownTransformer.d.ts +3 -0
- package/dist/field/features/BlockQuote/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/BlockQuote/markdownTransformer.js +50 -0
- package/dist/field/features/Blocks/component/FormSavePlugin.d.ts +12 -0
- package/dist/field/features/Blocks/component/FormSavePlugin.d.ts.map +1 -0
- package/dist/field/features/Blocks/component/FormSavePlugin.js +33 -0
- package/dist/field/features/Blocks/component/index.d.ts +14 -0
- package/dist/field/features/Blocks/component/index.d.ts.map +1 -0
- package/dist/field/features/Blocks/component/index.js +176 -0
- package/dist/field/features/Blocks/drawer/index.d.ts +10 -0
- package/dist/field/features/Blocks/drawer/index.d.ts.map +1 -0
- package/dist/field/features/Blocks/drawer/index.js +140 -0
- package/dist/field/features/Blocks/index.d.ts +8 -0
- package/dist/field/features/Blocks/index.d.ts.map +1 -0
- package/dist/field/features/Blocks/index.js +80 -0
- package/dist/field/features/Blocks/nodes/BlocksNode.d.ts +38 -0
- package/dist/field/features/Blocks/nodes/BlocksNode.d.ts.map +1 -0
- package/dist/field/features/Blocks/nodes/BlocksNode.js +104 -0
- package/dist/field/features/Blocks/plugin/index.d.ts +7 -0
- package/dist/field/features/Blocks/plugin/index.d.ts.map +1 -0
- package/dist/field/features/Blocks/plugin/index.js +86 -0
- package/dist/field/features/Heading/index.d.ts +8 -0
- package/dist/field/features/Heading/index.d.ts.map +1 -0
- package/dist/field/features/Heading/index.js +104 -0
- package/dist/field/features/Heading/markdownTransformer.d.ts +3 -0
- package/dist/field/features/Heading/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/Heading/markdownTransformer.js +32 -0
- package/dist/field/features/Link/afterReadPromise.d.ts +5 -0
- package/dist/field/features/Link/afterReadPromise.d.ts.map +1 -0
- package/dist/field/features/Link/afterReadPromise.js +51 -0
- package/dist/field/features/Link/drawer/baseFields.d.ts +4 -0
- package/dist/field/features/Link/drawer/baseFields.d.ts.map +1 -0
- package/dist/field/features/Link/drawer/baseFields.js +91 -0
- package/dist/field/features/Link/drawer/index.d.ts +5 -0
- package/dist/field/features/Link/drawer/index.d.ts.map +1 -0
- package/dist/field/features/Link/drawer/index.js +40 -0
- package/dist/field/features/Link/drawer/types.d.ts +8 -0
- package/dist/field/features/Link/drawer/types.d.ts.map +1 -0
- package/dist/field/features/Link/drawer/types.js +6 -0
- package/dist/field/features/Link/index.d.ts +14 -0
- package/dist/field/features/Link/index.d.ts.map +1 -0
- package/dist/field/features/Link/index.js +117 -0
- package/dist/field/features/Link/nodes/AutoLinkNode.d.ts +16 -0
- package/dist/field/features/Link/nodes/AutoLinkNode.d.ts.map +1 -0
- package/dist/field/features/Link/nodes/AutoLinkNode.js +75 -0
- package/dist/field/features/Link/nodes/LinkNode.d.ts +55 -0
- package/dist/field/features/Link/nodes/LinkNode.d.ts.map +1 -0
- package/dist/field/features/Link/nodes/LinkNode.js +368 -0
- package/dist/field/features/Link/plugins/autoLink/index.d.ts +26 -0
- package/dist/field/features/Link/plugins/autoLink/index.d.ts.map +1 -0
- package/dist/field/features/Link/plugins/autoLink/index.js +230 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts +9 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.js +301 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/index.d.ts +7 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/index.d.ts.map +1 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/index.js +61 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/types.d.ts +13 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/types.d.ts.map +1 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/types.js +6 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/utilities.d.ts +12 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/utilities.js +44 -0
- package/dist/field/features/Link/plugins/link/index.d.ts +9 -0
- package/dist/field/features/Link/plugins/link/index.d.ts.map +1 -0
- package/dist/field/features/Link/plugins/link/index.js +74 -0
- package/dist/field/features/Paragraph/index.d.ts +3 -0
- package/dist/field/features/Paragraph/index.d.ts.map +1 -0
- package/dist/field/features/Paragraph/index.js +74 -0
- package/dist/field/features/Relationship/afterReadPromise.d.ts +4 -0
- package/dist/field/features/Relationship/afterReadPromise.d.ts.map +1 -0
- package/dist/field/features/Relationship/afterReadPromise.js +34 -0
- package/dist/field/features/Relationship/drawer/index.d.ts +14 -0
- package/dist/field/features/Relationship/drawer/index.d.ts.map +1 -0
- package/dist/field/features/Relationship/drawer/index.js +135 -0
- package/dist/field/features/Relationship/index.d.ts +4 -0
- package/dist/field/features/Relationship/index.d.ts.map +1 -0
- package/dist/field/features/Relationship/index.js +72 -0
- package/dist/field/features/Relationship/nodes/RelationshipNode.d.ts +34 -0
- package/dist/field/features/Relationship/nodes/RelationshipNode.d.ts.map +1 -0
- package/dist/field/features/Relationship/nodes/RelationshipNode.js +165 -0
- package/dist/field/features/Relationship/nodes/components/RelationshipComponent.d.ts +14 -0
- package/dist/field/features/Relationship/nodes/components/RelationshipComponent.d.ts.map +1 -0
- package/dist/field/features/Relationship/nodes/components/RelationshipComponent.js +158 -0
- package/dist/field/features/Relationship/plugins/index.d.ts +6 -0
- package/dist/field/features/Relationship/plugins/index.d.ts.map +1 -0
- package/dist/field/features/Relationship/plugins/index.js +88 -0
- package/dist/field/features/Relationship/utils/EnabledRelationshipsCondition.d.ts +3 -0
- package/dist/field/features/Relationship/utils/EnabledRelationshipsCondition.d.ts.map +1 -0
- package/dist/field/features/Relationship/utils/EnabledRelationshipsCondition.js +75 -0
- package/dist/field/features/Upload/afterReadPromise.d.ts +5 -0
- package/dist/field/features/Upload/afterReadPromise.d.ts.map +1 -0
- package/dist/field/features/Upload/afterReadPromise.js +51 -0
- package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.d.ts +12 -0
- package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -0
- package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.js +129 -0
- package/dist/field/features/Upload/component/index.d.ts +10 -0
- package/dist/field/features/Upload/component/index.d.ts.map +1 -0
- package/dist/field/features/Upload/component/index.js +188 -0
- package/dist/field/features/Upload/drawer/index.d.ts +14 -0
- package/dist/field/features/Upload/drawer/index.d.ts.map +1 -0
- package/dist/field/features/Upload/drawer/index.js +131 -0
- package/dist/field/features/Upload/index.d.ts +12 -0
- package/dist/field/features/Upload/index.d.ts.map +1 -0
- package/dist/field/features/Upload/index.js +70 -0
- package/dist/field/features/Upload/nodes/UploadNode.d.ts +44 -0
- package/dist/field/features/Upload/nodes/UploadNode.d.ts.map +1 -0
- package/dist/field/features/Upload/nodes/UploadNode.js +153 -0
- package/dist/field/features/Upload/plugin/index.d.ts +7 -0
- package/dist/field/features/Upload/plugin/index.d.ts.map +1 -0
- package/dist/field/features/Upload/plugin/index.js +97 -0
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts +4 -0
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts.map +1 -0
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +23 -0
- package/dist/field/features/align/index.d.ts +4 -0
- package/dist/field/features/align/index.d.ts.map +1 -0
- package/dist/field/features/align/index.js +67 -0
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts +4 -0
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts.map +1 -0
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +21 -0
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts +4 -0
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts.map +1 -0
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +23 -0
- package/dist/field/features/debug/TreeView/index.d.ts +4 -0
- package/dist/field/features/debug/TreeView/index.d.ts.map +1 -0
- package/dist/field/features/debug/TreeView/index.js +30 -0
- package/dist/field/features/debug/TreeView/plugin.d.ts +3 -0
- package/dist/field/features/debug/TreeView/plugin.d.ts.map +1 -0
- package/dist/field/features/debug/TreeView/plugin.js +66 -0
- package/dist/field/features/format/Bold/index.d.ts +3 -0
- package/dist/field/features/format/Bold/index.d.ts.map +1 -0
- package/dist/field/features/format/Bold/index.js +57 -0
- package/dist/field/features/format/Bold/markdownTransformers.d.ts +6 -0
- package/dist/field/features/format/Bold/markdownTransformers.d.ts.map +1 -0
- package/dist/field/features/format/Bold/markdownTransformers.js +58 -0
- package/dist/field/features/format/InlineCode/index.d.ts +3 -0
- package/dist/field/features/format/InlineCode/index.d.ts.map +1 -0
- package/dist/field/features/format/InlineCode/index.js +49 -0
- package/dist/field/features/format/InlineCode/markdownTransformers.d.ts +3 -0
- package/dist/field/features/format/InlineCode/markdownTransformers.d.ts.map +1 -0
- package/dist/field/features/format/InlineCode/markdownTransformers.js +19 -0
- package/dist/field/features/format/Italic/index.d.ts +3 -0
- package/dist/field/features/format/Italic/index.d.ts.map +1 -0
- package/dist/field/features/format/Italic/index.js +50 -0
- package/dist/field/features/format/Italic/markdownTransformers.d.ts +4 -0
- package/dist/field/features/format/Italic/markdownTransformers.d.ts.map +1 -0
- package/dist/field/features/format/Italic/markdownTransformers.js +35 -0
- package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts +4 -0
- package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts.map +1 -0
- package/dist/field/features/format/common/floatingSelectToolbarSection.js +21 -0
- package/dist/field/features/format/strikethrough/index.d.ts +3 -0
- package/dist/field/features/format/strikethrough/index.d.ts.map +1 -0
- package/dist/field/features/format/strikethrough/index.js +49 -0
- package/dist/field/features/format/strikethrough/markdownTransformers.d.ts +3 -0
- package/dist/field/features/format/strikethrough/markdownTransformers.d.ts.map +1 -0
- package/dist/field/features/format/strikethrough/markdownTransformers.js +19 -0
- package/dist/field/features/format/subscript/index.d.ts +3 -0
- package/dist/field/features/format/subscript/index.d.ts.map +1 -0
- package/dist/field/features/format/subscript/index.js +45 -0
- package/dist/field/features/format/superscript/index.d.ts +3 -0
- package/dist/field/features/format/superscript/index.d.ts.map +1 -0
- package/dist/field/features/format/superscript/index.js +45 -0
- package/dist/field/features/format/underline/index.d.ts +3 -0
- package/dist/field/features/format/underline/index.d.ts.map +1 -0
- package/dist/field/features/format/underline/index.js +45 -0
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts +4 -0
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts.map +1 -0
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +21 -0
- package/dist/field/features/indent/index.d.ts +4 -0
- package/dist/field/features/indent/index.d.ts.map +1 -0
- package/dist/field/features/indent/index.js +67 -0
- package/dist/field/features/lists/CheckList/index.d.ts +3 -0
- package/dist/field/features/lists/CheckList/index.d.ts.map +1 -0
- package/dist/field/features/lists/CheckList/index.js +67 -0
- package/dist/field/features/lists/CheckList/markdownTransformers.d.ts +3 -0
- package/dist/field/features/lists/CheckList/markdownTransformers.d.ts.map +1 -0
- package/dist/field/features/lists/CheckList/markdownTransformers.js +26 -0
- package/dist/field/features/lists/OrderedList/index.d.ts +3 -0
- package/dist/field/features/lists/OrderedList/index.d.ts.map +1 -0
- package/dist/field/features/lists/OrderedList/index.js +65 -0
- package/dist/field/features/lists/OrderedList/markdownTransformer.d.ts +3 -0
- package/dist/field/features/lists/OrderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/lists/OrderedList/markdownTransformer.js +26 -0
- package/dist/field/features/lists/UnorderedList/index.d.ts +3 -0
- package/dist/field/features/lists/UnorderedList/index.d.ts.map +1 -0
- package/dist/field/features/lists/UnorderedList/index.js +65 -0
- package/dist/field/features/lists/UnorderedList/markdownTransformer.d.ts +3 -0
- package/dist/field/features/lists/UnorderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/lists/UnorderedList/markdownTransformer.js +26 -0
- package/dist/field/features/lists/common/markdown.d.ts +6 -0
- package/dist/field/features/lists/common/markdown.d.ts.map +1 -0
- package/dist/field/features/lists/common/markdown.js +76 -0
- package/dist/field/features/types.d.ts +95 -0
- package/dist/field/features/types.d.ts.map +1 -0
- package/dist/field/features/types.js +6 -0
- package/dist/field/index.d.ts +4 -0
- package/dist/field/index.d.ts.map +1 -0
- package/dist/field/index.js +60 -0
- package/dist/field/lexical/LexicalEditor.d.ts +5 -0
- package/dist/field/lexical/LexicalEditor.d.ts.map +1 -0
- package/dist/field/lexical/LexicalEditor.js +134 -0
- package/dist/field/lexical/LexicalProvider.d.ts +16 -0
- package/dist/field/lexical/LexicalProvider.d.ts.map +1 -0
- package/dist/field/lexical/LexicalProvider.js +89 -0
- package/dist/field/lexical/config/EditorConfigProvider.d.ts +16 -0
- package/dist/field/lexical/config/EditorConfigProvider.d.ts.map +1 -0
- package/dist/field/lexical/config/EditorConfigProvider.js +96 -0
- package/dist/field/lexical/config/default.d.ts +4 -0
- package/dist/field/lexical/config/default.d.ts.map +1 -0
- package/dist/field/lexical/config/default.js +67 -0
- package/dist/field/lexical/config/loader.d.ts +7 -0
- package/dist/field/lexical/config/loader.d.ts.map +1 -0
- package/dist/field/lexical/config/loader.js +133 -0
- package/dist/field/lexical/config/sanitize.d.ts +5 -0
- package/dist/field/lexical/config/sanitize.d.ts.map +1 -0
- package/dist/field/lexical/config/sanitize.js +138 -0
- package/dist/field/lexical/config/types.d.ts +12 -0
- package/dist/field/lexical/config/types.d.ts.map +1 -0
- package/dist/field/lexical/config/types.js +6 -0
- package/dist/field/lexical/nodes/index.d.ts +6 -0
- package/dist/field/lexical/nodes/index.d.ts.map +1 -0
- package/dist/field/lexical/nodes/index.js +15 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts +8 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +135 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts +17 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +289 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts +9 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +36 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts +6 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +272 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts +40 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts.map +1 -0
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +6 -0
- package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts +10 -0
- package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js +66 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +63 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +457 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +26 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +281 -0
- package/dist/field/lexical/plugins/SlashMenu/defaultGroups.d.ts +2 -0
- package/dist/field/lexical/plugins/SlashMenu/defaultGroups.d.ts.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/defaultGroups.js +3 -0
- package/dist/field/lexical/plugins/SlashMenu/index.d.ts +4 -0
- package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/index.js +187 -0
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts +6 -0
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +264 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts +2 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +24 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts +2 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +24 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts +27 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +160 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts +3 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +37 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts +6 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +346 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts +3 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +59 -0
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.d.ts +5 -0
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +24 -0
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts +3 -0
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +16 -0
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.d.ts +2 -0
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +15 -0
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts +2 -0
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +27 -0
- package/dist/field/lexical/theme/EditorTheme.d.ts +4 -0
- package/dist/field/lexical/theme/EditorTheme.d.ts.map +1 -0
- package/dist/field/lexical/theme/EditorTheme.js +115 -0
- package/dist/field/lexical/ui/ContentEditable.d.ts +6 -0
- package/dist/field/lexical/ui/ContentEditable.d.ts.map +1 -0
- package/dist/field/lexical/ui/ContentEditable.js +59 -0
- package/dist/field/lexical/ui/icons/AI/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/AI/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/AI/index.js +42 -0
- package/dist/field/lexical/ui/icons/AlignCenter/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/AlignCenter/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/AlignCenter/index.js +40 -0
- package/dist/field/lexical/ui/icons/AlignLeft/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/AlignLeft/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/AlignLeft/index.js +40 -0
- package/dist/field/lexical/ui/icons/AlignRight/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/AlignRight/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/AlignRight/index.js +40 -0
- package/dist/field/lexical/ui/icons/Block/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Block/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Block/index.js +49 -0
- package/dist/field/lexical/ui/icons/Blockquote/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Blockquote/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Blockquote/index.js +31 -0
- package/dist/field/lexical/ui/icons/Bold/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Bold/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Bold/index.js +31 -0
- package/dist/field/lexical/ui/icons/Checklist/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Checklist/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Checklist/index.js +39 -0
- package/dist/field/lexical/ui/icons/Code/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Code/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Code/index.js +34 -0
- package/dist/field/lexical/ui/icons/CodeBlock/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/CodeBlock/index.js +34 -0
- package/dist/field/lexical/ui/icons/H1/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/H1/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/H1/index.js +31 -0
- package/dist/field/lexical/ui/icons/H2/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/H2/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/H2/index.js +31 -0
- package/dist/field/lexical/ui/icons/H3/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/H3/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/H3/index.js +31 -0
- package/dist/field/lexical/ui/icons/H4/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/H4/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/H4/index.js +31 -0
- package/dist/field/lexical/ui/icons/H5/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/H5/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/H5/index.js +31 -0
- package/dist/field/lexical/ui/icons/H6/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/H6/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/H6/index.js +31 -0
- package/dist/field/lexical/ui/icons/IndentDecrease/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/IndentDecrease/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js +43 -0
- package/dist/field/lexical/ui/icons/IndentIncrease/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/IndentIncrease/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js +43 -0
- package/dist/field/lexical/ui/icons/Italic/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Italic/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Italic/index.js +31 -0
- package/dist/field/lexical/ui/icons/Link/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Link/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Link/index.js +42 -0
- package/dist/field/lexical/ui/icons/OrderedList/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/OrderedList/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/OrderedList/index.js +46 -0
- package/dist/field/lexical/ui/icons/Relationship/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Relationship/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Relationship/index.js +42 -0
- package/dist/field/lexical/ui/icons/Strikethrough/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Strikethrough/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Strikethrough/index.js +34 -0
- package/dist/field/lexical/ui/icons/Subscript/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Subscript/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Subscript/index.js +31 -0
- package/dist/field/lexical/ui/icons/Superscript/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Superscript/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Superscript/index.js +31 -0
- package/dist/field/lexical/ui/icons/Text/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Text/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Text/index.js +31 -0
- package/dist/field/lexical/ui/icons/Underline/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Underline/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Underline/index.js +34 -0
- package/dist/field/lexical/ui/icons/UnorderedList/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/UnorderedList/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/UnorderedList/index.js +61 -0
- package/dist/field/lexical/ui/icons/Upload/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Upload/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Upload/index.js +43 -0
- package/dist/field/lexical/utils/canUseDOM.d.ts +2 -0
- package/dist/field/lexical/utils/canUseDOM.d.ts.map +1 -0
- package/dist/field/lexical/utils/canUseDOM.js +13 -0
- package/dist/field/lexical/utils/cloneDeep.d.ts +2 -0
- package/dist/field/lexical/utils/cloneDeep.d.ts.map +1 -0
- package/dist/field/lexical/utils/cloneDeep.js +39 -0
- package/dist/field/lexical/utils/getDOMRangeRect.d.ts +2 -0
- package/dist/field/lexical/utils/getDOMRangeRect.d.ts.map +1 -0
- package/dist/field/lexical/utils/getDOMRangeRect.js +26 -0
- package/dist/field/lexical/utils/getSelectedNode.d.ts +3 -0
- package/dist/field/lexical/utils/getSelectedNode.d.ts.map +1 -0
- package/dist/field/lexical/utils/getSelectedNode.js +33 -0
- package/dist/field/lexical/utils/guard.d.ts +9 -0
- package/dist/field/lexical/utils/guard.d.ts.map +1 -0
- package/dist/field/lexical/utils/guard.js +21 -0
- package/dist/field/lexical/utils/invariant.d.ts +2 -0
- package/dist/field/lexical/utils/invariant.d.ts.map +1 -0
- package/dist/field/lexical/utils/invariant.js +22 -0
- package/dist/field/lexical/utils/isMobileWidth.d.ts +9 -0
- package/dist/field/lexical/utils/isMobileWidth.d.ts.map +1 -0
- package/dist/field/lexical/utils/isMobileWidth.js +9 -0
- package/dist/field/lexical/utils/joinClasses.d.ts +9 -0
- package/dist/field/lexical/utils/joinClasses.d.ts.map +1 -0
- package/dist/field/lexical/utils/joinClasses.js +21 -0
- package/dist/field/lexical/utils/markdown/createBlockNode.d.ts +4 -0
- package/dist/field/lexical/utils/markdown/createBlockNode.d.ts.map +1 -0
- package/dist/field/lexical/utils/markdown/createBlockNode.js +20 -0
- package/dist/field/lexical/utils/point.d.ts +22 -0
- package/dist/field/lexical/utils/point.d.ts.map +1 -0
- package/dist/field/lexical/utils/point.js +61 -0
- package/dist/field/lexical/utils/rect.d.ts +54 -0
- package/dist/field/lexical/utils/rect.d.ts.map +1 -0
- package/dist/field/lexical/utils/rect.js +154 -0
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts +2 -0
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts.map +1 -0
- package/dist/field/lexical/utils/setFloatingElemPosition.js +55 -0
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts +2 -0
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts.map +1 -0
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +43 -0
- package/dist/field/lexical/utils/swipe.d.ts +12 -0
- package/dist/field/lexical/utils/swipe.d.ts.map +1 -0
- package/dist/field/lexical/utils/swipe.js +130 -0
- package/dist/field/lexical/utils/url.d.ts +10 -0
- package/dist/field/lexical/utils/url.d.ts.map +1 -0
- package/dist/field/lexical/utils/url.js +40 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +170 -0
- package/dist/populate/defaultValue.d.ts +26 -0
- package/dist/populate/defaultValue.d.ts.map +1 -0
- package/dist/populate/defaultValue.js +41 -0
- package/dist/populate/populate.d.ts +20 -0
- package/dist/populate/populate.d.ts.map +1 -0
- package/dist/populate/populate.js +31 -0
- package/dist/populate/recurseNestedFields.d.ts +16 -0
- package/dist/populate/recurseNestedFields.d.ts.map +1 -0
- package/dist/populate/recurseNestedFields.js +182 -0
- package/dist/populate/richTextRelationshipPromise.d.ts +22 -0
- package/dist/populate/richTextRelationshipPromise.d.ts.map +1 -0
- package/dist/populate/richTextRelationshipPromise.js +71 -0
- package/dist/populate/validation.d.ts +4 -0
- package/dist/populate/validation.d.ts.map +1 -0
- package/dist/populate/validation.js +21 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/package.json +60 -0
- package/src/index.ts +92 -0
package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "highlightElemOriginalPosition", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return highlightElemOriginalPosition;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _getBoundingRectWithoutTransform = require("./getBoundingRectWithoutTransform");
|
|
12
|
+
function highlightElemOriginalPosition(debugHighlightRef, htmlElem, anchorElem) {
|
|
13
|
+
if (!debugHighlightRef.current) {
|
|
14
|
+
// If the ref doesn't point to an existing element, we can't set styles
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const { left: anchorLeft, top: anchorTop } = anchorElem.getBoundingClientRect();
|
|
18
|
+
// Get computed styles of the given element
|
|
19
|
+
const boundingRect = (0, _getBoundingRectWithoutTransform.getBoundingClientRectWithoutTransform)(htmlElem);
|
|
20
|
+
// Extract necessary styles (ignoring transform)
|
|
21
|
+
const width = boundingRect.width;
|
|
22
|
+
const height = boundingRect.height;
|
|
23
|
+
const top = boundingRect.top - anchorTop;
|
|
24
|
+
const left = boundingRect.left - anchorLeft;
|
|
25
|
+
debugHighlightRef.current.style.border = '2px solid green';
|
|
26
|
+
debugHighlightRef.current.style.boxSizing = 'border-box';
|
|
27
|
+
debugHighlightRef.current.style.height = height + 'px';
|
|
28
|
+
debugHighlightRef.current.style.pointerEvents = 'none';
|
|
29
|
+
debugHighlightRef.current.style.position = 'absolute';
|
|
30
|
+
debugHighlightRef.current.style.top = top + 'px';
|
|
31
|
+
debugHighlightRef.current.style.left = left + 'px';
|
|
32
|
+
debugHighlightRef.current.style.width = width + 'px';
|
|
33
|
+
debugHighlightRef.current.style.zIndex = '1000';
|
|
34
|
+
debugHighlightRef.current.style.opacity = '0.5';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKFxuICBkZWJ1Z0hpZ2hsaWdodFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgaHRtbEVsZW06IEhUTUxFbGVtZW50LFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbikge1xuICBpZiAoIWRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQpIHtcbiAgICAvLyBJZiB0aGUgcmVmIGRvZXNuJ3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcgZWxlbWVudCwgd2UgY2FuJ3Qgc2V0IHN0eWxlc1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBsZWZ0OiBhbmNob3JMZWZ0LCB0b3A6IGFuY2hvclRvcCB9ID0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gIC8vIEdldCBjb21wdXRlZCBzdHlsZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgY29uc3QgYm91bmRpbmdSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShodG1sRWxlbSlcblxuICAvLyBFeHRyYWN0IG5lY2Vzc2FyeSBzdHlsZXMgKGlnbm9yaW5nIHRyYW5zZm9ybSlcbiAgY29uc3Qgd2lkdGggPSBib3VuZGluZ1JlY3Qud2lkdGhcbiAgY29uc3QgaGVpZ2h0ID0gYm91bmRpbmdSZWN0LmhlaWdodFxuICBjb25zdCB0b3AgPSBib3VuZGluZ1JlY3QudG9wIC0gYW5jaG9yVG9wXG4gIGNvbnN0IGxlZnQgPSBib3VuZGluZ1JlY3QubGVmdCAtIGFuY2hvckxlZnRcblxuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JlZW4nXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4J1xuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS50b3AgPSB0b3AgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS56SW5kZXggPSAnMTAwMCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAuNSdcbn1cbiJdLCJuYW1lcyI6WyJoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbiIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaHRtbEVsZW0iLCJhbmNob3JFbGVtIiwiY3VycmVudCIsImxlZnQiLCJhbmNob3JMZWZ0IiwidG9wIiwiYW5jaG9yVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm91bmRpbmdSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJib3JkZXIiLCJib3hTaXppbmciLCJwb2ludGVyRXZlbnRzIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJvcGFjaXR5Il0sIm1hcHBpbmdzIjoiOzs7OytCQUlnQkE7OztlQUFBQTs7O2lEQUZzQztBQUUvQyxTQUFTQSw4QkFDZEMsaUJBQWtELEVBQ2xEQyxRQUFxQixFQUNyQkMsVUFBdUI7SUFFdkIsSUFBSSxDQUFDRixrQkFBa0JHLE9BQU8sRUFBRTtRQUM5Qix1RUFBdUU7UUFDdkU7SUFDRjtJQUVBLE1BQU0sRUFBRUMsTUFBTUMsVUFBVSxFQUFFQyxLQUFLQyxTQUFTLEVBQUUsR0FBR0wsV0FBV00scUJBQXFCO0lBRTdFLDJDQUEyQztJQUMzQyxNQUFNQyxlQUFlQyxJQUFBQSxzRUFBcUMsRUFBQ1Q7SUFFM0QsZ0RBQWdEO0lBQ2hELE1BQU1VLFFBQVFGLGFBQWFFLEtBQUs7SUFDaEMsTUFBTUMsU0FBU0gsYUFBYUcsTUFBTTtJQUNsQyxNQUFNTixNQUFNRyxhQUFhSCxHQUFHLEdBQUdDO0lBQy9CLE1BQU1ILE9BQU9LLGFBQWFMLElBQUksR0FBR0M7SUFFakNMLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNDLE1BQU0sR0FBRztJQUN6Q2Qsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ0UsU0FBUyxHQUFHO0lBQzVDZixrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDRCxNQUFNLEdBQUdBLFNBQVM7SUFDbERaLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNHLGFBQWEsR0FBRztJQUNoRGhCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNJLFFBQVEsR0FBRztJQUMzQ2pCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNQLEdBQUcsR0FBR0EsTUFBTTtJQUM1Q04sa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ1QsSUFBSSxHQUFHQSxPQUFPO0lBQzlDSixrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDRixLQUFLLEdBQUdBLFFBQVE7SUFDaERYLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNLLE1BQU0sR0FBRztJQUN6Q2xCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNNLE9BQU8sR0FBRztBQUM1QyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"names":[],"mappings":";AAwBA,OAAO,cAAc,CAAA;AAkXrB,wBAAgB,oBAAoB,CAAC,EACnC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,CAGd"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*
|
|
7
|
+
*/ "use strict";
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, "DraggableBlockPlugin", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function() {
|
|
14
|
+
return DraggableBlockPlugin;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
18
|
+
const _richtext = require("@lexical/rich-text");
|
|
19
|
+
const _lexical = require("lexical");
|
|
20
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
21
|
+
const _reactdom = require("react-dom");
|
|
22
|
+
const _guard = require("../../../utils/guard");
|
|
23
|
+
const _point = require("../../../utils/point");
|
|
24
|
+
const _getTopLevelNodeKeys = require("../utils/getTopLevelNodeKeys");
|
|
25
|
+
const _isOnHandleElement = require("../utils/isOnHandleElement");
|
|
26
|
+
const _setHandlePosition = require("../utils/setHandlePosition");
|
|
27
|
+
const _getBoundingRectWithoutTransform = require("./getBoundingRectWithoutTransform");
|
|
28
|
+
const _getNodeCloseToPoint = require("./getNodeCloseToPoint");
|
|
29
|
+
require("./index.scss");
|
|
30
|
+
const _setTargetLine = require("./setTargetLine");
|
|
31
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
32
|
+
if (typeof WeakMap !== "function") return null;
|
|
33
|
+
var cacheBabelInterop = new WeakMap();
|
|
34
|
+
var cacheNodeInterop = new WeakMap();
|
|
35
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
36
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
37
|
+
})(nodeInterop);
|
|
38
|
+
}
|
|
39
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
40
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
41
|
+
return obj;
|
|
42
|
+
}
|
|
43
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
44
|
+
return {
|
|
45
|
+
default: obj
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
49
|
+
if (cache && cache.has(obj)) {
|
|
50
|
+
return cache.get(obj);
|
|
51
|
+
}
|
|
52
|
+
var newObj = {};
|
|
53
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
54
|
+
for(var key in obj){
|
|
55
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
56
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
57
|
+
if (desc && (desc.get || desc.set)) {
|
|
58
|
+
Object.defineProperty(newObj, key, desc);
|
|
59
|
+
} else {
|
|
60
|
+
newObj[key] = obj[key];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
newObj.default = obj;
|
|
65
|
+
if (cache) {
|
|
66
|
+
cache.set(obj, newObj);
|
|
67
|
+
}
|
|
68
|
+
return newObj;
|
|
69
|
+
}
|
|
70
|
+
const SPACE = -24;
|
|
71
|
+
const DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu';
|
|
72
|
+
const DRAG_DATA_FORMAT = 'application/x-lexical-drag-block';
|
|
73
|
+
let prevIndex = Infinity;
|
|
74
|
+
function getCurrentIndex(keysLength) {
|
|
75
|
+
if (keysLength === 0) {
|
|
76
|
+
return Infinity;
|
|
77
|
+
}
|
|
78
|
+
if (prevIndex >= 0 && prevIndex < keysLength) {
|
|
79
|
+
return prevIndex;
|
|
80
|
+
}
|
|
81
|
+
return Math.floor(keysLength / 2);
|
|
82
|
+
}
|
|
83
|
+
function setDragImage(dataTransfer, draggableBlockElem) {
|
|
84
|
+
const { transform } = draggableBlockElem.style;
|
|
85
|
+
// Remove dragImage borders
|
|
86
|
+
draggableBlockElem.style.transform = 'translateZ(0)';
|
|
87
|
+
dataTransfer.setDragImage(draggableBlockElem, 0, 0);
|
|
88
|
+
setTimeout(()=>{
|
|
89
|
+
draggableBlockElem.style.transform = transform;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function hideTargetLine(targetLineElem, lastTargetBlockElem) {
|
|
93
|
+
if (targetLineElem) {
|
|
94
|
+
targetLineElem.style.opacity = '0';
|
|
95
|
+
targetLineElem.style.transform = 'translate(-10000px, -10000px)';
|
|
96
|
+
}
|
|
97
|
+
if (lastTargetBlockElem) {
|
|
98
|
+
lastTargetBlockElem.style.opacity = '1';
|
|
99
|
+
lastTargetBlockElem.style.transform = 'translate(0, 0)';
|
|
100
|
+
//lastTargetBlockElem.style.border = 'none'
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function useDraggableBlockMenu(editor, anchorElem, isEditable) {
|
|
104
|
+
const scrollerElem = anchorElem.parentElement;
|
|
105
|
+
const menuRef = (0, _react.useRef)(null);
|
|
106
|
+
const targetLineRef = (0, _react.useRef)(null);
|
|
107
|
+
const debugHighlightRef = (0, _react.useRef)(null);
|
|
108
|
+
const isDraggingBlockRef = (0, _react.useRef)(false);
|
|
109
|
+
const [draggableBlockElem, setDraggableBlockElem] = (0, _react.useState)(null);
|
|
110
|
+
const [lastTargetBlockElem, setLastTargetBlockElem] = (0, _react.useState)(null);
|
|
111
|
+
const calculateDistanceFromScrollerElem = (0, _react.useCallback)((pageX, pageY, target, horizontalBuffer = 50, verticalBuffer = 25)=>{
|
|
112
|
+
let distanceFromScrollerElem = 0;
|
|
113
|
+
// Calculate distance between scrollerElem and target if target is not in scrollerElem
|
|
114
|
+
if (scrollerElem && !scrollerElem.contains(target)) {
|
|
115
|
+
const { bottom, left, right, top } = scrollerElem.getBoundingClientRect();
|
|
116
|
+
const adjustedTop = top + window.scrollY;
|
|
117
|
+
const adjustedBottom = bottom + window.scrollY;
|
|
118
|
+
if (pageY < adjustedTop - verticalBuffer || pageY > adjustedBottom + verticalBuffer || pageX < left - horizontalBuffer || pageX > right + horizontalBuffer) {
|
|
119
|
+
setDraggableBlockElem(null);
|
|
120
|
+
return distanceFromScrollerElem;
|
|
121
|
+
}
|
|
122
|
+
// This is used to allow the _draggableBlockElem to be found when the mouse is in the
|
|
123
|
+
// buffer zone around the scrollerElem.
|
|
124
|
+
if (pageX < left || pageX > right) {
|
|
125
|
+
distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return distanceFromScrollerElem;
|
|
129
|
+
}, [
|
|
130
|
+
scrollerElem
|
|
131
|
+
]);
|
|
132
|
+
(0, _react.useEffect)(()=>{
|
|
133
|
+
/**
|
|
134
|
+
* Handles positioning of the drag handle
|
|
135
|
+
*/ function onDocumentMouseMove(event) {
|
|
136
|
+
const target = event.target;
|
|
137
|
+
if (!(0, _guard.isHTMLElement)(target)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const distanceFromScrollerElem = calculateDistanceFromScrollerElem(event.pageX, event.pageY, target);
|
|
141
|
+
if ((0, _isOnHandleElement.isOnHandleElement)(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const topLevelNodeKeys = (0, _getTopLevelNodeKeys.getTopLevelNodeKeys)(editor);
|
|
145
|
+
const { blockElem: _draggableBlockElem, foundAtIndex, isFoundNodeEmptyParagraph } = (0, _getNodeCloseToPoint.getNodeCloseToPoint)({
|
|
146
|
+
anchorElem,
|
|
147
|
+
cache_treshold: 0,
|
|
148
|
+
editor,
|
|
149
|
+
horizontalOffset: -distanceFromScrollerElem,
|
|
150
|
+
point: new _point.Point(event.x, event.y),
|
|
151
|
+
startIndex: getCurrentIndex(topLevelNodeKeys.length),
|
|
152
|
+
useEdgeAsDefault: false
|
|
153
|
+
});
|
|
154
|
+
//if (DEBUG && _draggableBlockElem) {
|
|
155
|
+
//targetBlockElem.style.border = '3px solid red'
|
|
156
|
+
// highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)
|
|
157
|
+
//}
|
|
158
|
+
prevIndex = foundAtIndex;
|
|
159
|
+
if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
setDraggableBlockElem(_draggableBlockElem);
|
|
163
|
+
}
|
|
164
|
+
// Since the draggableBlockElem is outside the actual editor, we need to listen to the document
|
|
165
|
+
// to be able to detect when the mouse is outside the editor and respect a buffer around the
|
|
166
|
+
// the scrollerElem to avoid the draggableBlockElem disappearing too early.
|
|
167
|
+
document?.addEventListener('mousemove', onDocumentMouseMove);
|
|
168
|
+
return ()=>{
|
|
169
|
+
document?.removeEventListener('mousemove', onDocumentMouseMove);
|
|
170
|
+
};
|
|
171
|
+
}, [
|
|
172
|
+
scrollerElem,
|
|
173
|
+
anchorElem,
|
|
174
|
+
editor,
|
|
175
|
+
calculateDistanceFromScrollerElem
|
|
176
|
+
]);
|
|
177
|
+
(0, _react.useEffect)(()=>{
|
|
178
|
+
if (menuRef.current) {
|
|
179
|
+
(0, _setHandlePosition.setHandlePosition)(draggableBlockElem, menuRef.current, anchorElem, SPACE);
|
|
180
|
+
}
|
|
181
|
+
}, [
|
|
182
|
+
anchorElem,
|
|
183
|
+
draggableBlockElem
|
|
184
|
+
]);
|
|
185
|
+
(0, _react.useEffect)(()=>{
|
|
186
|
+
function onDragover(event) {
|
|
187
|
+
if (!isDraggingBlockRef.current) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
const [isFileTransfer] = (0, _richtext.eventFiles)(event);
|
|
191
|
+
if (isFileTransfer) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
const { pageY, target } = event;
|
|
195
|
+
if (!(0, _guard.isHTMLElement)(target)) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
const distanceFromScrollerElem = calculateDistanceFromScrollerElem(event.pageX, event.pageY, target, 100, 50);
|
|
199
|
+
const topLevelNodeKeys = (0, _getTopLevelNodeKeys.getTopLevelNodeKeys)(editor);
|
|
200
|
+
const { blockElem: targetBlockElem, foundAtIndex, isFoundNodeEmptyParagraph } = (0, _getNodeCloseToPoint.getNodeCloseToPoint)({
|
|
201
|
+
anchorElem,
|
|
202
|
+
editor,
|
|
203
|
+
fuzzy: true,
|
|
204
|
+
horizontalOffset: -distanceFromScrollerElem,
|
|
205
|
+
point: new _point.Point(event.x, event.y),
|
|
206
|
+
startIndex: getCurrentIndex(topLevelNodeKeys.length),
|
|
207
|
+
useEdgeAsDefault: true,
|
|
208
|
+
verbose: true
|
|
209
|
+
});
|
|
210
|
+
prevIndex = foundAtIndex;
|
|
211
|
+
const targetLineElem = targetLineRef.current;
|
|
212
|
+
// targetBlockElem === null shouldn't happen
|
|
213
|
+
if (targetBlockElem === null || targetLineElem === null) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
if (draggableBlockElem !== targetBlockElem) {
|
|
217
|
+
(0, _setTargetLine.setTargetLine)(SPACE, targetLineElem, targetBlockElem, lastTargetBlockElem, pageY, anchorElem, event, debugHighlightRef, isFoundNodeEmptyParagraph);
|
|
218
|
+
// Prevent default event to be able to trigger onDrop events
|
|
219
|
+
// Calling preventDefault() adds the green plus icon to the cursor,
|
|
220
|
+
// indicating that the drop is allowed.
|
|
221
|
+
event.preventDefault();
|
|
222
|
+
} else {
|
|
223
|
+
hideTargetLine(targetLineElem, lastTargetBlockElem);
|
|
224
|
+
}
|
|
225
|
+
setLastTargetBlockElem(targetBlockElem);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
function onDrop(event) {
|
|
229
|
+
if (!isDraggingBlockRef.current) {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
const [isFileTransfer] = (0, _richtext.eventFiles)(event);
|
|
233
|
+
if (isFileTransfer) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
const { dataTransfer, pageY, target } = event;
|
|
237
|
+
const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || '';
|
|
238
|
+
editor.update(()=>{
|
|
239
|
+
const draggedNode = (0, _lexical.$getNodeByKey)(dragData);
|
|
240
|
+
if (!draggedNode) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
if (!(0, _guard.isHTMLElement)(target)) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
const distanceFromScrollerElem = calculateDistanceFromScrollerElem(event.pageX, event.pageY, target, 100, 50);
|
|
247
|
+
const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = (0, _getNodeCloseToPoint.getNodeCloseToPoint)({
|
|
248
|
+
anchorElem,
|
|
249
|
+
editor,
|
|
250
|
+
fuzzy: true,
|
|
251
|
+
horizontalOffset: -distanceFromScrollerElem,
|
|
252
|
+
point: new _point.Point(event.x, event.y),
|
|
253
|
+
useEdgeAsDefault: true
|
|
254
|
+
});
|
|
255
|
+
if (!targetBlockElem) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
const targetNode = (0, _lexical.$getNearestNodeFromDOMNode)(targetBlockElem);
|
|
259
|
+
if (!targetNode) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
if (targetNode === draggedNode) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
const { height: targetBlockElemHeight, top: targetBlockElemTop } = (0, _getBoundingRectWithoutTransform.getBoundingClientRectWithoutTransform)(targetBlockElem);
|
|
266
|
+
const mouseY = pageY;
|
|
267
|
+
const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY;
|
|
268
|
+
if (!isFoundNodeEmptyParagraph) {
|
|
269
|
+
if (isBelow) {
|
|
270
|
+
// below targetBlockElem
|
|
271
|
+
targetNode.insertAfter(draggedNode);
|
|
272
|
+
} else {
|
|
273
|
+
// above targetBlockElem
|
|
274
|
+
targetNode.insertBefore(draggedNode);
|
|
275
|
+
}
|
|
276
|
+
} else {
|
|
277
|
+
//
|
|
278
|
+
targetNode.insertBefore(draggedNode);
|
|
279
|
+
targetNode.remove();
|
|
280
|
+
}
|
|
281
|
+
/*
|
|
282
|
+
if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {
|
|
283
|
+
targetNode.insertAfter(draggedNode)
|
|
284
|
+
} else {
|
|
285
|
+
targetNode.insertBefore(draggedNode)
|
|
286
|
+
}*/ setDraggableBlockElem(null);
|
|
287
|
+
});
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
// register onDragover event listeners:
|
|
291
|
+
document.addEventListener('dragover', onDragover);
|
|
292
|
+
// register onDrop event listeners:
|
|
293
|
+
document.addEventListener('drop', onDrop);
|
|
294
|
+
return ()=>{
|
|
295
|
+
document.removeEventListener('dragover', onDragover);
|
|
296
|
+
document.removeEventListener('drop', onDrop);
|
|
297
|
+
};
|
|
298
|
+
}, [
|
|
299
|
+
anchorElem,
|
|
300
|
+
editor,
|
|
301
|
+
lastTargetBlockElem,
|
|
302
|
+
calculateDistanceFromScrollerElem,
|
|
303
|
+
draggableBlockElem
|
|
304
|
+
]);
|
|
305
|
+
function onDragStart(event) {
|
|
306
|
+
const dataTransfer = event.dataTransfer;
|
|
307
|
+
if (!dataTransfer || !draggableBlockElem) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
setDragImage(dataTransfer, draggableBlockElem);
|
|
311
|
+
let nodeKey = '';
|
|
312
|
+
editor.update(()=>{
|
|
313
|
+
const node = (0, _lexical.$getNearestNodeFromDOMNode)(draggableBlockElem);
|
|
314
|
+
if (node) {
|
|
315
|
+
nodeKey = node.getKey();
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
isDraggingBlockRef.current = true;
|
|
319
|
+
dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey);
|
|
320
|
+
}
|
|
321
|
+
function onDragEnd() {
|
|
322
|
+
isDraggingBlockRef.current = false;
|
|
323
|
+
hideTargetLine(targetLineRef.current, lastTargetBlockElem);
|
|
324
|
+
}
|
|
325
|
+
return /*#__PURE__*/ (0, _reactdom.createPortal)(/*#__PURE__*/ _react.createElement(_react.Fragment, null, /*#__PURE__*/ _react.createElement("div", {
|
|
326
|
+
className: "icon draggable-block-menu",
|
|
327
|
+
draggable: true,
|
|
328
|
+
onDragEnd: onDragEnd,
|
|
329
|
+
onDragStart: onDragStart,
|
|
330
|
+
ref: menuRef
|
|
331
|
+
}, /*#__PURE__*/ _react.createElement("div", {
|
|
332
|
+
className: isEditable ? 'icon' : ''
|
|
333
|
+
})), /*#__PURE__*/ _react.createElement("div", {
|
|
334
|
+
className: "draggable-block-target-line",
|
|
335
|
+
ref: targetLineRef
|
|
336
|
+
}), /*#__PURE__*/ _react.createElement("div", {
|
|
337
|
+
className: "debug-highlight",
|
|
338
|
+
ref: debugHighlightRef
|
|
339
|
+
})), anchorElem);
|
|
340
|
+
}
|
|
341
|
+
function DraggableBlockPlugin({ anchorElem = document.body }) {
|
|
342
|
+
const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
|
|
343
|
+
return useDraggableBlockMenu(editor, anchorElem, editor._editable);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuaW1wb3J0IHR5cGUgeyBMZXhpY2FsRWRpdG9yIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB0eXBlIHsgRHJhZ0V2ZW50IGFzIFJlYWN0RHJhZ0V2ZW50IH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgZXZlbnRGaWxlcyB9IGZyb20gJ0BsZXhpY2FsL3JpY2gtdGV4dCdcbmltcG9ydCB7ICRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlLCAkZ2V0Tm9kZUJ5S2V5IH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ3VhcmQnXG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3BvaW50J1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMnXG5pbXBvcnQgeyBpc09uSGFuZGxlRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2lzT25IYW5kbGVFbGVtZW50J1xuaW1wb3J0IHsgc2V0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9zZXRIYW5kbGVQb3NpdGlvbidcbmltcG9ydCB7IGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0gfSBmcm9tICcuL2dldEJvdW5kaW5nUmVjdFdpdGhvdXRUcmFuc2Zvcm0nXG5pbXBvcnQgeyBnZXROb2RlQ2xvc2VUb1BvaW50IH0gZnJvbSAnLi9nZXROb2RlQ2xvc2VUb1BvaW50J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5pbXBvcnQgeyBzZXRUYXJnZXRMaW5lIH0gZnJvbSAnLi9zZXRUYXJnZXRMaW5lJ1xuXG5jb25zdCBTUEFDRSA9IC0yNFxuY29uc3QgRFJBR0dBQkxFX0JMT0NLX01FTlVfQ0xBU1NOQU1FID0gJ2RyYWdnYWJsZS1ibG9jay1tZW51J1xuY29uc3QgRFJBR19EQVRBX0ZPUk1BVCA9ICdhcHBsaWNhdGlvbi94LWxleGljYWwtZHJhZy1ibG9jaydcblxubGV0IHByZXZJbmRleCA9IEluZmluaXR5XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRJbmRleChrZXlzTGVuZ3RoOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoa2V5c0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBJbmZpbml0eVxuICB9XG4gIGlmIChwcmV2SW5kZXggPj0gMCAmJiBwcmV2SW5kZXggPCBrZXlzTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHByZXZJbmRleFxuICB9XG5cbiAgcmV0dXJuIE1hdGguZmxvb3Ioa2V5c0xlbmd0aCAvIDIpXG59XG5cbmZ1bmN0aW9uIHNldERyYWdJbWFnZShkYXRhVHJhbnNmZXI6IERhdGFUcmFuc2ZlciwgZHJhZ2dhYmxlQmxvY2tFbGVtOiBIVE1MRWxlbWVudCkge1xuICBjb25zdCB7IHRyYW5zZm9ybSB9ID0gZHJhZ2dhYmxlQmxvY2tFbGVtLnN0eWxlXG5cbiAgLy8gUmVtb3ZlIGRyYWdJbWFnZSBib3JkZXJzXG4gIGRyYWdnYWJsZUJsb2NrRWxlbS5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWigwKSdcbiAgZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShkcmFnZ2FibGVCbG9ja0VsZW0sIDAsIDApXG5cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZHJhZ2dhYmxlQmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxuICB9KVxufVxuXG5mdW5jdGlvbiBoaWRlVGFyZ2V0TGluZShcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgbGFzdFRhcmdldEJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsLFxuKSB7XG4gIGlmICh0YXJnZXRMaW5lRWxlbSkge1xuICAgIHRhcmdldExpbmVFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgICB0YXJnZXRMaW5lRWxlbS5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC0xMDAwMHB4LCAtMTAwMDBweCknXG4gIH1cbiAgaWYgKGxhc3RUYXJnZXRCbG9ja0VsZW0pIHtcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoMCwgMCknXG4gICAgLy9sYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLmJvcmRlciA9ICdub25lJ1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZURyYWdnYWJsZUJsb2NrTWVudShcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgaXNFZGl0YWJsZTogYm9vbGVhbixcbik6IEpTWC5FbGVtZW50IHtcbiAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdGFyZ2V0TGluZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgZGVidWdIaWdobGlnaHRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGlzRHJhZ2dpbmdCbG9ja1JlZiA9IHVzZVJlZjxib29sZWFuPihmYWxzZSlcbiAgY29uc3QgW2RyYWdnYWJsZUJsb2NrRWxlbSwgc2V0RHJhZ2dhYmxlQmxvY2tFbGVtXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2xhc3RUYXJnZXRCbG9ja0VsZW0sIHNldExhc3RUYXJnZXRCbG9ja0VsZW1dID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHBhZ2VYOiBudW1iZXIsXG4gICAgICBwYWdlWTogbnVtYmVyLFxuICAgICAgdGFyZ2V0OiBIVE1MRWxlbWVudCxcbiAgICAgIGhvcml6b250YWxCdWZmZXI6IG51bWJlciA9IDUwLFxuICAgICAgdmVydGljYWxCdWZmZXI6IG51bWJlciA9IDI1LFxuICAgICk6IG51bWJlciA9PiB7XG4gICAgICBsZXQgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gMFxuICAgICAgLy8gQ2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4gc2Nyb2xsZXJFbGVtIGFuZCB0YXJnZXQgaWYgdGFyZ2V0IGlzIG5vdCBpbiBzY3JvbGxlckVsZW1cbiAgICAgIGlmIChzY3JvbGxlckVsZW0gJiYgIXNjcm9sbGVyRWxlbS5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIGNvbnN0IHsgYm90dG9tLCBsZWZ0LCByaWdodCwgdG9wIH0gPSBzY3JvbGxlckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcblxuICAgICAgICBjb25zdCBhZGp1c3RlZFRvcCA9IHRvcCArIHdpbmRvdy5zY3JvbGxZXG4gICAgICAgIGNvbnN0IGFkanVzdGVkQm90dG9tID0gYm90dG9tICsgd2luZG93LnNjcm9sbFlcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFnZVkgPCBhZGp1c3RlZFRvcCAtIHZlcnRpY2FsQnVmZmVyIHx8XG4gICAgICAgICAgcGFnZVkgPiBhZGp1c3RlZEJvdHRvbSArIHZlcnRpY2FsQnVmZmVyIHx8XG4gICAgICAgICAgcGFnZVggPCBsZWZ0IC0gaG9yaXpvbnRhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VYID4gcmlnaHQgKyBob3Jpem9udGFsQnVmZmVyXG4gICAgICAgICkge1xuICAgICAgICAgIHNldERyYWdnYWJsZUJsb2NrRWxlbShudWxsKVxuICAgICAgICAgIHJldHVybiBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgaXMgdXNlZCB0byBhbGxvdyB0aGUgX2RyYWdnYWJsZUJsb2NrRWxlbSB0byBiZSBmb3VuZCB3aGVuIHRoZSBtb3VzZSBpcyBpbiB0aGVcbiAgICAgICAgLy8gYnVmZmVyIHpvbmUgYXJvdW5kIHRoZSBzY3JvbGxlckVsZW0uXG4gICAgICAgIGlmIChwYWdlWCA8IGxlZnQgfHwgcGFnZVggPiByaWdodCkge1xuICAgICAgICAgIGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSA9IHBhZ2VYIDwgbGVmdCA/IHBhZ2VYIC0gbGVmdCA6IHBhZ2VYIC0gcmlnaHRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbVxuICAgIH0sXG4gICAgW3Njcm9sbGVyRWxlbV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgcG9zaXRpb25pbmcgb2YgdGhlIGRyYWcgaGFuZGxlXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Eb2N1bWVudE1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0XG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtKFxuICAgICAgICBldmVudC5wYWdlWCxcbiAgICAgICAgZXZlbnQucGFnZVksXG4gICAgICAgIHRhcmdldCxcbiAgICAgIClcblxuICAgICAgaWYgKGlzT25IYW5kbGVFbGVtZW50KHRhcmdldCwgRFJBR0dBQkxFX0JMT0NLX01FTlVfQ0xBU1NOQU1FKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuICAgICAgY29uc3Qge1xuICAgICAgICBibG9ja0VsZW06IF9kcmFnZ2FibGVCbG9ja0VsZW0sXG4gICAgICAgIGZvdW5kQXRJbmRleCxcbiAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgICAgIH0gPSBnZXROb2RlQ2xvc2VUb1BvaW50KHtcbiAgICAgICAgYW5jaG9yRWxlbSxcbiAgICAgICAgY2FjaGVfdHJlc2hvbGQ6IDAsXG4gICAgICAgIGVkaXRvcixcbiAgICAgICAgaG9yaXpvbnRhbE9mZnNldDogLWRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICAgICAgcG9pbnQ6IG5ldyBQb2ludChldmVudC54LCBldmVudC55KSxcbiAgICAgICAgc3RhcnRJbmRleDogZ2V0Q3VycmVudEluZGV4KHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSxcbiAgICAgICAgdXNlRWRnZUFzRGVmYXVsdDogZmFsc2UsXG4gICAgICB9KVxuICAgICAgLy9pZiAoREVCVUcgJiYgX2RyYWdnYWJsZUJsb2NrRWxlbSkge1xuICAgICAgLy90YXJnZXRCbG9ja0VsZW0uc3R5bGUuYm9yZGVyID0gJzNweCBzb2xpZCByZWQnXG4gICAgICAvLyBoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbihkZWJ1Z0hpZ2hsaWdodFJlZiwgX2RyYWdnYWJsZUJsb2NrRWxlbSwgYW5jaG9yRWxlbSlcbiAgICAgIC8vfVxuICAgICAgcHJldkluZGV4ID0gZm91bmRBdEluZGV4XG5cbiAgICAgIGlmICghX2RyYWdnYWJsZUJsb2NrRWxlbSAmJiAhaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0RHJhZ2dhYmxlQmxvY2tFbGVtKF9kcmFnZ2FibGVCbG9ja0VsZW0pXG4gICAgfVxuXG4gICAgLy8gU2luY2UgdGhlIGRyYWdnYWJsZUJsb2NrRWxlbSBpcyBvdXRzaWRlIHRoZSBhY3R1YWwgZWRpdG9yLCB3ZSBuZWVkIHRvIGxpc3RlbiB0byB0aGUgZG9jdW1lbnRcbiAgICAvLyB0byBiZSBhYmxlIHRvIGRldGVjdCB3aGVuIHRoZSBtb3VzZSBpcyBvdXRzaWRlIHRoZSBlZGl0b3IgYW5kIHJlc3BlY3QgYSBidWZmZXIgYXJvdW5kIHRoZVxuICAgIC8vIHRoZSBzY3JvbGxlckVsZW0gdG8gYXZvaWQgdGhlIGRyYWdnYWJsZUJsb2NrRWxlbSBkaXNhcHBlYXJpbmcgdG9vIGVhcmx5LlxuICAgIGRvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbkRvY3VtZW50TW91c2VNb3ZlKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbkRvY3VtZW50TW91c2VNb3ZlKVxuICAgIH1cbiAgfSwgW3Njcm9sbGVyRWxlbSwgYW5jaG9yRWxlbSwgZWRpdG9yLCBjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCkge1xuICAgICAgc2V0SGFuZGxlUG9zaXRpb24oZHJhZ2dhYmxlQmxvY2tFbGVtLCBtZW51UmVmLmN1cnJlbnQsIGFuY2hvckVsZW0sIFNQQUNFKVxuICAgIH1cbiAgfSwgW2FuY2hvckVsZW0sIGRyYWdnYWJsZUJsb2NrRWxlbV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBvbkRyYWdvdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiBib29sZWFuIHtcbiAgICAgIGlmICghaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBbaXNGaWxlVHJhbnNmZXJdID0gZXZlbnRGaWxlcyhldmVudClcbiAgICAgIGlmIChpc0ZpbGVUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYWdlWSwgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSA9IGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbShcbiAgICAgICAgZXZlbnQucGFnZVgsXG4gICAgICAgIGV2ZW50LnBhZ2VZLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIDEwMCxcbiAgICAgICAgNTAsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICAgICAgY29uc3Qge1xuICAgICAgICBibG9ja0VsZW06IHRhcmdldEJsb2NrRWxlbSxcbiAgICAgICAgZm91bmRBdEluZGV4LFxuICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGZ1enp5OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICBwb2ludDogbmV3IFBvaW50KGV2ZW50LngsIGV2ZW50LnkpLFxuICAgICAgICBzdGFydEluZGV4OiBnZXRDdXJyZW50SW5kZXgodG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGgpLFxuICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICB2ZXJib3NlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHByZXZJbmRleCA9IGZvdW5kQXRJbmRleFxuXG4gICAgICBjb25zdCB0YXJnZXRMaW5lRWxlbSA9IHRhcmdldExpbmVSZWYuY3VycmVudFxuICAgICAgLy8gdGFyZ2V0QmxvY2tFbGVtID09PSBudWxsIHNob3VsZG4ndCBoYXBwZW5cbiAgICAgIGlmICh0YXJnZXRCbG9ja0VsZW0gPT09IG51bGwgfHwgdGFyZ2V0TGluZUVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGlmIChkcmFnZ2FibGVCbG9ja0VsZW0gIT09IHRhcmdldEJsb2NrRWxlbSkge1xuICAgICAgICBzZXRUYXJnZXRMaW5lKFxuICAgICAgICAgIFNQQUNFLFxuICAgICAgICAgIHRhcmdldExpbmVFbGVtLFxuICAgICAgICAgIHRhcmdldEJsb2NrRWxlbSxcbiAgICAgICAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLFxuICAgICAgICAgIHBhZ2VZLFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgZGVidWdIaWdobGlnaHRSZWYsXG4gICAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBldmVudCB0byBiZSBhYmxlIHRvIHRyaWdnZXIgb25Ecm9wIGV2ZW50c1xuICAgICAgICAvLyBDYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgYWRkcyB0aGUgZ3JlZW4gcGx1cyBpY29uIHRvIHRoZSBjdXJzb3IsXG4gICAgICAgIC8vIGluZGljYXRpbmcgdGhhdCB0aGUgZHJvcCBpcyBhbGxvd2VkLlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoaWRlVGFyZ2V0TGluZSh0YXJnZXRMaW5lRWxlbSwgbGFzdFRhcmdldEJsb2NrRWxlbSlcbiAgICAgIH1cblxuICAgICAgc2V0TGFzdFRhcmdldEJsb2NrRWxlbSh0YXJnZXRCbG9ja0VsZW0pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiBib29sZWFuIHtcbiAgICAgIGlmICghaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBbaXNGaWxlVHJhbnNmZXJdID0gZXZlbnRGaWxlcyhldmVudClcbiAgICAgIGlmIChpc0ZpbGVUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgZGF0YVRyYW5zZmVyLCBwYWdlWSwgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgY29uc3QgZHJhZ0RhdGEgPSBkYXRhVHJhbnNmZXI/LmdldERhdGEoRFJBR19EQVRBX0ZPUk1BVCkgfHwgJydcblxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRyYWdnZWROb2RlID0gJGdldE5vZGVCeUtleShkcmFnRGF0YSlcbiAgICAgICAgaWYgKCFkcmFnZ2VkTm9kZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtKFxuICAgICAgICAgIGV2ZW50LnBhZ2VYLFxuICAgICAgICAgIGV2ZW50LnBhZ2VZLFxuICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAxMDAsXG4gICAgICAgICAgNTAsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCB7IGJsb2NrRWxlbTogdGFyZ2V0QmxvY2tFbGVtLCBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoIH0gPSBnZXROb2RlQ2xvc2VUb1BvaW50KHtcbiAgICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBmdXp6eTogdHJ1ZSxcbiAgICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICAgIHBvaW50OiBuZXcgUG9pbnQoZXZlbnQueCwgZXZlbnQueSksXG4gICAgICAgICAgdXNlRWRnZUFzRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIXRhcmdldEJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSAkZ2V0TmVhcmVzdE5vZGVGcm9tRE9NTm9kZSh0YXJnZXRCbG9ja0VsZW0pXG4gICAgICAgIGlmICghdGFyZ2V0Tm9kZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXROb2RlID09PSBkcmFnZ2VkTm9kZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGhlaWdodDogdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0LCB0b3A6IHRhcmdldEJsb2NrRWxlbVRvcCB9ID1cbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKHRhcmdldEJsb2NrRWxlbSlcblxuICAgICAgICBjb25zdCBtb3VzZVkgPSBwYWdlWVxuICAgICAgICBjb25zdCBpc0JlbG93ID0gbW91c2VZID49IHRhcmdldEJsb2NrRWxlbVRvcCArIHRhcmdldEJsb2NrRWxlbUhlaWdodCAvIDIgKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmICghaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGlmIChpc0JlbG93KSB7XG4gICAgICAgICAgICAvLyBiZWxvdyB0YXJnZXRCbG9ja0VsZW1cbiAgICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QWZ0ZXIoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGFib3ZlIHRhcmdldEJsb2NrRWxlbVxuICAgICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgdGFyZ2V0Tm9kZS5yZW1vdmUoKVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgaWYgKHBhZ2VZID49IHRhcmdldEJsb2NrRWxlbVRvcCArIHRhcmdldEJsb2NrRWxlbUhlaWdodCAvIDIpIHtcbiAgICAgICAgICB0YXJnZXROb2RlLmluc2VydEFmdGVyKGRyYWdnZWROb2RlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QmVmb3JlKGRyYWdnZWROb2RlKVxuICAgICAgICB9Ki9cbiAgICAgICAgc2V0RHJhZ2dhYmxlQmxvY2tFbGVtKG51bGwpXG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIHJlZ2lzdGVyIG9uRHJhZ292ZXIgZXZlbnQgbGlzdGVuZXJzOlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgb25EcmFnb3ZlcilcbiAgICAvLyByZWdpc3RlciBvbkRyb3AgZXZlbnQgbGlzdGVuZXJzOlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBvbkRyb3ApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRyYWdvdmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJvcCcsIG9uRHJvcClcbiAgICB9XG4gIH0sIFtcbiAgICBhbmNob3JFbGVtLFxuICAgIGVkaXRvcixcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLFxuICAgIGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICBkcmFnZ2FibGVCbG9ja0VsZW0sXG4gIF0pXG5cbiAgZnVuY3Rpb24gb25EcmFnU3RhcnQoZXZlbnQ6IFJlYWN0RHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IGV2ZW50LmRhdGFUcmFuc2ZlclxuICAgIGlmICghZGF0YVRyYW5zZmVyIHx8ICFkcmFnZ2FibGVCbG9ja0VsZW0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXREcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLCBkcmFnZ2FibGVCbG9ja0VsZW0pXG4gICAgbGV0IG5vZGVLZXkgPSAnJ1xuICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9ICRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlKGRyYWdnYWJsZUJsb2NrRWxlbSlcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIG5vZGVLZXkgPSBub2RlLmdldEtleSgpXG4gICAgICB9XG4gICAgfSlcbiAgICBpc0RyYWdnaW5nQmxvY2tSZWYuY3VycmVudCA9IHRydWVcbiAgICBkYXRhVHJhbnNmZXIuc2V0RGF0YShEUkFHX0RBVEFfRk9STUFULCBub2RlS2V5KVxuICB9XG5cbiAgZnVuY3Rpb24gb25EcmFnRW5kKCk6IHZvaWQge1xuICAgIGlzRHJhZ2dpbmdCbG9ja1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBoaWRlVGFyZ2V0TGluZSh0YXJnZXRMaW5lUmVmLmN1cnJlbnQsIGxhc3RUYXJnZXRCbG9ja0VsZW0pXG4gIH1cblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiaWNvbiBkcmFnZ2FibGUtYmxvY2stbWVudVwiXG4gICAgICAgIGRyYWdnYWJsZVxuICAgICAgICBvbkRyYWdFbmQ9e29uRHJhZ0VuZH1cbiAgICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgICByZWY9e21lbnVSZWZ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZHJhZ2dhYmxlLWJsb2NrLXRhcmdldC1saW5lXCIgcmVmPXt0YXJnZXRMaW5lUmVmfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZWJ1Zy1oaWdobGlnaHRcIiByZWY9e2RlYnVnSGlnaGxpZ2h0UmVmfSAvPlxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+LFxuICAgIGFuY2hvckVsZW0sXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERyYWdnYWJsZUJsb2NrUGx1Z2luKHtcbiAgYW5jaG9yRWxlbSA9IGRvY3VtZW50LmJvZHksXG59OiB7XG4gIGFuY2hvckVsZW0/OiBIVE1MRWxlbWVudFxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgcmV0dXJuIHVzZURyYWdnYWJsZUJsb2NrTWVudShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiRHJhZ2dhYmxlQmxvY2tQbHVnaW4iLCJTUEFDRSIsIkRSQUdHQUJMRV9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRSQUdfREFUQV9GT1JNQVQiLCJwcmV2SW5kZXgiLCJJbmZpbml0eSIsImdldEN1cnJlbnRJbmRleCIsImtleXNMZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJzZXREcmFnSW1hZ2UiLCJkYXRhVHJhbnNmZXIiLCJkcmFnZ2FibGVCbG9ja0VsZW0iLCJ0cmFuc2Zvcm0iLCJzdHlsZSIsInNldFRpbWVvdXQiLCJoaWRlVGFyZ2V0TGluZSIsInRhcmdldExpbmVFbGVtIiwibGFzdFRhcmdldEJsb2NrRWxlbSIsIm9wYWNpdHkiLCJ1c2VEcmFnZ2FibGVCbG9ja01lbnUiLCJlZGl0b3IiLCJhbmNob3JFbGVtIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwidGFyZ2V0TGluZVJlZiIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaXNEcmFnZ2luZ0Jsb2NrUmVmIiwic2V0RHJhZ2dhYmxlQmxvY2tFbGVtIiwidXNlU3RhdGUiLCJzZXRMYXN0VGFyZ2V0QmxvY2tFbGVtIiwiY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwidXNlQ2FsbGJhY2siLCJwYWdlWCIsInBhZ2VZIiwidGFyZ2V0IiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwiY29udGFpbnMiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhZGp1c3RlZFRvcCIsIndpbmRvdyIsInNjcm9sbFkiLCJhZGp1c3RlZEJvdHRvbSIsInVzZUVmZmVjdCIsIm9uRG9jdW1lbnRNb3VzZU1vdmUiLCJldmVudCIsImlzSFRNTEVsZW1lbnQiLCJpc09uSGFuZGxlRWxlbWVudCIsInRvcExldmVsTm9kZUtleXMiLCJnZXRUb3BMZXZlbE5vZGVLZXlzIiwiYmxvY2tFbGVtIiwiX2RyYWdnYWJsZUJsb2NrRWxlbSIsImZvdW5kQXRJbmRleCIsImlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgiLCJnZXROb2RlQ2xvc2VUb1BvaW50IiwiY2FjaGVfdHJlc2hvbGQiLCJob3Jpem9udGFsT2Zmc2V0IiwicG9pbnQiLCJQb2ludCIsIngiLCJ5Iiwic3RhcnRJbmRleCIsImxlbmd0aCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsInNldEhhbmRsZVBvc2l0aW9uIiwib25EcmFnb3ZlciIsImlzRmlsZVRyYW5zZmVyIiwiZXZlbnRGaWxlcyIsInRhcmdldEJsb2NrRWxlbSIsImZ1enp5IiwidmVyYm9zZSIsInNldFRhcmdldExpbmUiLCJwcmV2ZW50RGVmYXVsdCIsIm9uRHJvcCIsImRyYWdEYXRhIiwiZ2V0RGF0YSIsInVwZGF0ZSIsImRyYWdnZWROb2RlIiwiJGdldE5vZGVCeUtleSIsInRhcmdldE5vZGUiLCIkZ2V0TmVhcmVzdE5vZGVGcm9tRE9NTm9kZSIsImhlaWdodCIsInRhcmdldEJsb2NrRWxlbUhlaWdodCIsInRhcmdldEJsb2NrRWxlbVRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0iLCJtb3VzZVkiLCJpc0JlbG93IiwiaW5zZXJ0QWZ0ZXIiLCJpbnNlcnRCZWZvcmUiLCJyZW1vdmUiLCJvbkRyYWdTdGFydCIsIm5vZGVLZXkiLCJub2RlIiwiZ2V0S2V5Iiwic2V0RGF0YSIsIm9uRHJhZ0VuZCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJkcmFnZ2FibGUiLCJyZWYiLCJib2R5IiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIl9lZGl0YWJsZSJdLCJtYXBwaW5ncyI6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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare function setTargetLine(SPACE: number, targetLineElem: HTMLElement, targetBlockElem: HTMLElement, lastTargetBlockElem: HTMLElement | null, mouseY: number, anchorElem: HTMLElement, event: DragEvent, debugHighlightRef: React.RefObject<HTMLDivElement>, isFoundNodeEmptyParagraph?: boolean): void;
|
|
3
|
+
//# sourceMappingURL=setTargetLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setTargetLine.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.ts"],"names":[],"mappings":";AAOA,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,WAAW,EAC3B,eAAe,EAAE,WAAW,EAC5B,mBAAmB,EAAE,WAAW,GAAG,IAAI,EACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,EAClD,yBAAyB,GAAE,OAAe,QAiD3C"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "setTargetLine", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return setTargetLine;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _getCollapsedMargins = require("../utils/getCollapsedMargins");
|
|
12
|
+
const _getBoundingRectWithoutTransform = require("./getBoundingRectWithoutTransform");
|
|
13
|
+
const _highlightElemOriginalPosition = require("./highlightElemOriginalPosition");
|
|
14
|
+
const TARGET_LINE_HALF_HEIGHT = 25;
|
|
15
|
+
const TEXT_BOX_HORIZONTAL_PADDING = -24;
|
|
16
|
+
const DEBUG = false;
|
|
17
|
+
function setTargetLine(SPACE, targetLineElem, targetBlockElem, lastTargetBlockElem, mouseY, anchorElem, event, debugHighlightRef, isFoundNodeEmptyParagraph = false) {
|
|
18
|
+
const { height: targetBlockElemHeight, top: targetBlockElemTop } = (0, _getBoundingRectWithoutTransform.getBoundingClientRectWithoutTransform)(targetBlockElem);
|
|
19
|
+
const { top: anchorTop, width: anchorWidth } = anchorElem.getBoundingClientRect();
|
|
20
|
+
const { marginBottom, marginTop } = (0, _getCollapsedMargins.getCollapsedMargins)(targetBlockElem);
|
|
21
|
+
let lineTop = targetBlockElemTop;
|
|
22
|
+
const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY;
|
|
23
|
+
if (!isFoundNodeEmptyParagraph) {
|
|
24
|
+
if (isBelow) {
|
|
25
|
+
// below targetBlockElem
|
|
26
|
+
lineTop += targetBlockElemHeight + marginBottom / 2;
|
|
27
|
+
} else {
|
|
28
|
+
// above targetBlockElem
|
|
29
|
+
lineTop -= marginTop / 2;
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
lineTop += targetBlockElemHeight / 2;
|
|
33
|
+
}
|
|
34
|
+
const top = lineTop - anchorTop - TARGET_LINE_HALF_HEIGHT;
|
|
35
|
+
const left = TEXT_BOX_HORIZONTAL_PADDING - SPACE;
|
|
36
|
+
targetLineElem.style.transform = `translate(${left}px, ${top}px)`;
|
|
37
|
+
targetLineElem.style.width = `${anchorWidth - (TEXT_BOX_HORIZONTAL_PADDING - SPACE) * 2}px`;
|
|
38
|
+
targetLineElem.style.opacity = '.4';
|
|
39
|
+
targetBlockElem.style.opacity = '0.4';
|
|
40
|
+
if (!isFoundNodeEmptyParagraph) {
|
|
41
|
+
// move lastTargetBlockElem down 50px to make space for targetLineElem (which is 50px height)
|
|
42
|
+
if (isBelow) {
|
|
43
|
+
targetBlockElem.style.transform = `translate(0, ${-TARGET_LINE_HALF_HEIGHT / 1.9}px)`;
|
|
44
|
+
} else {
|
|
45
|
+
targetBlockElem.style.transform = `translate(0, ${TARGET_LINE_HALF_HEIGHT / 1.9}px)`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (DEBUG) {
|
|
49
|
+
//targetBlockElem.style.border = '3px solid red'
|
|
50
|
+
(0, _highlightElemOriginalPosition.highlightElemOriginalPosition)(debugHighlightRef, targetBlockElem, anchorElem);
|
|
51
|
+
}
|
|
52
|
+
if (lastTargetBlockElem && lastTargetBlockElem !== targetBlockElem) {
|
|
53
|
+
lastTargetBlockElem.style.opacity = '1';
|
|
54
|
+
lastTargetBlockElem.style.transform = 'translate(0, 0)';
|
|
55
|
+
//lastTargetBlockElem.style.border = 'none'
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9zZXRUYXJnZXRMaW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcbmltcG9ydCB7IGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uIH0gZnJvbSAnLi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbidcbmNvbnN0IFRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUID0gMjVcbmNvbnN0IFRFWFRfQk9YX0hPUklaT05UQUxfUEFERElORyA9IC0yNFxuY29uc3QgREVCVUcgPSBmYWxzZVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGFyZ2V0TGluZShcbiAgU1BBQ0U6IG51bWJlcixcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50LFxuICB0YXJnZXRCbG9ja0VsZW06IEhUTUxFbGVtZW50LFxuICBsYXN0VGFyZ2V0QmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGwsXG4gIG1vdXNlWTogbnVtYmVyLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZXZlbnQ6IERyYWdFdmVudCxcbiAgZGVidWdIaWdobGlnaHRSZWY6IFJlYWN0LlJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW4gPSBmYWxzZSxcbikge1xuICBjb25zdCB7IGhlaWdodDogdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0LCB0b3A6IHRhcmdldEJsb2NrRWxlbVRvcCB9ID1cbiAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKHRhcmdldEJsb2NrRWxlbSlcbiAgY29uc3QgeyB0b3A6IGFuY2hvclRvcCwgd2lkdGg6IGFuY2hvcldpZHRoIH0gPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyh0YXJnZXRCbG9ja0VsZW0pXG4gIGxldCBsaW5lVG9wID0gdGFyZ2V0QmxvY2tFbGVtVG9wXG5cbiAgY29uc3QgaXNCZWxvdyA9IG1vdXNlWSA+PSB0YXJnZXRCbG9ja0VsZW1Ub3AgKyB0YXJnZXRCbG9ja0VsZW1IZWlnaHQgLyAyICsgd2luZG93LnNjcm9sbFlcbiAgaWYgKCFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgaWYgKGlzQmVsb3cpIHtcbiAgICAgIC8vIGJlbG93IHRhcmdldEJsb2NrRWxlbVxuICAgICAgbGluZVRvcCArPSB0YXJnZXRCbG9ja0VsZW1IZWlnaHQgKyBtYXJnaW5Cb3R0b20gLyAyXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFib3ZlIHRhcmdldEJsb2NrRWxlbVxuICAgICAgbGluZVRvcCAtPSBtYXJnaW5Ub3AgLyAyXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxpbmVUb3AgKz0gdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IC8gMlxuICB9XG5cbiAgY29uc3QgdG9wID0gbGluZVRvcCAtIGFuY2hvclRvcCAtIFRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUXG4gIGNvbnN0IGxlZnQgPSBURVhUX0JPWF9IT1JJWk9OVEFMX1BBRERJTkcgLSBTUEFDRVxuXG4gIHRhcmdldExpbmVFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtsZWZ0fXB4LCAke3RvcH1weClgXG4gIHRhcmdldExpbmVFbGVtLnN0eWxlLndpZHRoID0gYCR7YW5jaG9yV2lkdGggLSAoVEVYVF9CT1hfSE9SSVpPTlRBTF9QQURESU5HIC0gU1BBQ0UpICogMn1weGBcbiAgdGFyZ2V0TGluZUVsZW0uc3R5bGUub3BhY2l0eSA9ICcuNCdcblxuICB0YXJnZXRCbG9ja0VsZW0uc3R5bGUub3BhY2l0eSA9ICcwLjQnXG4gIGlmICghaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCkge1xuICAgIC8vIG1vdmUgbGFzdFRhcmdldEJsb2NrRWxlbSBkb3duIDUwcHggdG8gbWFrZSBzcGFjZSBmb3IgdGFyZ2V0TGluZUVsZW0gKHdoaWNoIGlzIDUwcHggaGVpZ2h0KVxuICAgIGlmIChpc0JlbG93KSB7XG4gICAgICB0YXJnZXRCbG9ja0VsZW0uc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgwLCAkey1UQVJHRVRfTElORV9IQUxGX0hFSUdIVCAvIDEuOX1weClgXG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldEJsb2NrRWxlbS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKDAsICR7VEFSR0VUX0xJTkVfSEFMRl9IRUlHSFQgLyAxLjl9cHgpYFxuICAgIH1cbiAgfVxuXG4gIGlmIChERUJVRykge1xuICAgIC8vdGFyZ2V0QmxvY2tFbGVtLnN0eWxlLmJvcmRlciA9ICczcHggc29saWQgcmVkJ1xuICAgIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKGRlYnVnSGlnaGxpZ2h0UmVmLCB0YXJnZXRCbG9ja0VsZW0sIGFuY2hvckVsZW0pXG4gIH1cblxuICBpZiAobGFzdFRhcmdldEJsb2NrRWxlbSAmJiBsYXN0VGFyZ2V0QmxvY2tFbGVtICE9PSB0YXJnZXRCbG9ja0VsZW0pIHtcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoMCwgMCknXG4gICAgLy9sYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLmJvcmRlciA9ICdub25lJ1xuICB9XG59XG4iXSwibmFtZXMiOlsic2V0VGFyZ2V0TGluZSIsIlRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUIiwiVEVYVF9CT1hfSE9SSVpPTlRBTF9QQURESU5HIiwiREVCVUciLCJTUEFDRSIsInRhcmdldExpbmVFbGVtIiwidGFyZ2V0QmxvY2tFbGVtIiwibGFzdFRhcmdldEJsb2NrRWxlbSIsIm1vdXNlWSIsImFuY2hvckVsZW0iLCJldmVudCIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCIsImhlaWdodCIsInRhcmdldEJsb2NrRWxlbUhlaWdodCIsInRvcCIsInRhcmdldEJsb2NrRWxlbVRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0iLCJhbmNob3JUb3AiLCJ3aWR0aCIsImFuY2hvcldpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwiZ2V0Q29sbGFwc2VkTWFyZ2lucyIsImxpbmVUb3AiLCJpc0JlbG93Iiwid2luZG93Iiwic2Nyb2xsWSIsImxlZnQiLCJzdHlsZSIsInRyYW5zZm9ybSIsIm9wYWNpdHkiLCJoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFPZ0JBOzs7ZUFBQUE7OztxQ0FQb0I7aURBQ2tCOytDQUNSO0FBQzlDLE1BQU1DLDBCQUEwQjtBQUNoQyxNQUFNQyw4QkFBOEIsQ0FBQztBQUNyQyxNQUFNQyxRQUFRO0FBRVAsU0FBU0gsY0FDZEksS0FBYSxFQUNiQyxjQUEyQixFQUMzQkMsZUFBNEIsRUFDNUJDLG1CQUF1QyxFQUN2Q0MsTUFBYyxFQUNkQyxVQUF1QixFQUN2QkMsS0FBZ0IsRUFDaEJDLGlCQUFrRCxFQUNsREMsNEJBQXFDLEtBQUs7SUFFMUMsTUFBTSxFQUFFQyxRQUFRQyxxQkFBcUIsRUFBRUMsS0FBS0Msa0JBQWtCLEVBQUUsR0FDOURDLElBQUFBLHNFQUFxQyxFQUFDWDtJQUN4QyxNQUFNLEVBQUVTLEtBQUtHLFNBQVMsRUFBRUMsT0FBT0MsV0FBVyxFQUFFLEdBQUdYLFdBQVdZLHFCQUFxQjtJQUUvRSxNQUFNLEVBQUVDLFlBQVksRUFBRUMsU0FBUyxFQUFFLEdBQUdDLElBQUFBLHdDQUFtQixFQUFDbEI7SUFDeEQsSUFBSW1CLFVBQVVUO0lBRWQsTUFBTVUsVUFBVWxCLFVBQVVRLHFCQUFxQkYsd0JBQXdCLElBQUlhLE9BQU9DLE9BQU87SUFDekYsSUFBSSxDQUFDaEIsMkJBQTJCO1FBQzlCLElBQUljLFNBQVM7WUFDWCx3QkFBd0I7WUFDeEJELFdBQVdYLHdCQUF3QlEsZUFBZTtRQUNwRCxPQUFPO1lBQ0wsd0JBQXdCO1lBQ3hCRyxXQUFXRixZQUFZO1FBQ3pCO0lBQ0YsT0FBTztRQUNMRSxXQUFXWCx3QkFBd0I7SUFDckM7SUFFQSxNQUFNQyxNQUFNVSxVQUFVUCxZQUFZakI7SUFDbEMsTUFBTTRCLE9BQU8zQiw4QkFBOEJFO0lBRTNDQyxlQUFleUIsS0FBSyxDQUFDQyxTQUFTLEdBQUcsQ0FBQyxVQUFVLEVBQUVGLEtBQUssSUFBSSxFQUFFZCxJQUFJLEdBQUcsQ0FBQztJQUNqRVYsZUFBZXlCLEtBQUssQ0FBQ1gsS0FBSyxHQUFHLENBQUMsRUFBRUMsY0FBYyxBQUFDbEIsQ0FBQUEsOEJBQThCRSxLQUFJLElBQUssRUFBRSxFQUFFLENBQUM7SUFDM0ZDLGVBQWV5QixLQUFLLENBQUNFLE9BQU8sR0FBRztJQUUvQjFCLGdCQUFnQndCLEtBQUssQ0FBQ0UsT0FBTyxHQUFHO0lBQ2hDLElBQUksQ0FBQ3BCLDJCQUEyQjtRQUM5Qiw2RkFBNkY7UUFDN0YsSUFBSWMsU0FBUztZQUNYcEIsZ0JBQWdCd0IsS0FBSyxDQUFDQyxTQUFTLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzlCLDBCQUEwQixJQUFJLEdBQUcsQ0FBQztRQUN2RixPQUFPO1lBQ0xLLGdCQUFnQndCLEtBQUssQ0FBQ0MsU0FBUyxHQUFHLENBQUMsYUFBYSxFQUFFOUIsMEJBQTBCLElBQUksR0FBRyxDQUFDO1FBQ3RGO0lBQ0Y7SUFFQSxJQUFJRSxPQUFPO1FBQ1QsZ0RBQWdEO1FBQ2hEOEIsSUFBQUEsNERBQTZCLEVBQUN0QixtQkFBbUJMLGlCQUFpQkc7SUFDcEU7SUFFQSxJQUFJRix1QkFBdUJBLHdCQUF3QkQsaUJBQWlCO1FBQ2xFQyxvQkFBb0J1QixLQUFLLENBQUNFLE9BQU8sR0FBRztRQUNwQ3pCLG9CQUFvQnVCLEtBQUssQ0FBQ0MsU0FBUyxHQUFHO0lBQ3RDLDJDQUEyQztJQUM3QztBQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCollapsedMargins.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/getCollapsedMargins.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG;IACtD,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB,CAWA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getCollapsedMargins", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getCollapsedMargins;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function getCollapsedMargins(elem) {
|
|
12
|
+
const getMargin = (element, margin)=>element ? parseFloat(window.getComputedStyle(element)[margin]) : 0;
|
|
13
|
+
const { marginBottom, marginTop } = window.getComputedStyle(elem);
|
|
14
|
+
const prevElemSiblingMarginBottom = getMargin(elem.previousElementSibling, 'marginBottom');
|
|
15
|
+
const nextElemSiblingMarginTop = getMargin(elem.nextElementSibling, 'marginTop');
|
|
16
|
+
const collapsedTopMargin = Math.max(parseFloat(marginTop), prevElemSiblingMarginBottom);
|
|
17
|
+
const collapsedBottomMargin = Math.max(parseFloat(marginBottom), nextElemSiblingMarginTop);
|
|
18
|
+
return {
|
|
19
|
+
marginBottom: collapsedBottomMargin,
|
|
20
|
+
marginTop: collapsedTopMargin
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsYXBzZWRNYXJnaW5zKGVsZW06IEhUTUxFbGVtZW50KToge1xuICBtYXJnaW5Cb3R0b206IG51bWJlclxuICBtYXJnaW5Ub3A6IG51bWJlclxufSB7XG4gIGNvbnN0IGdldE1hcmdpbiA9IChlbGVtZW50OiBFbGVtZW50IHwgbnVsbCwgbWFyZ2luOiAnbWFyZ2luQm90dG9tJyB8ICdtYXJnaW5Ub3AnKTogbnVtYmVyID0+XG4gICAgZWxlbWVudCA/IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudClbbWFyZ2luXSkgOiAwXG5cbiAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSlcbiAgY29uc3QgcHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tID0gZ2V0TWFyZ2luKGVsZW0ucHJldmlvdXNFbGVtZW50U2libGluZywgJ21hcmdpbkJvdHRvbScpXG4gIGNvbnN0IG5leHRFbGVtU2libGluZ01hcmdpblRvcCA9IGdldE1hcmdpbihlbGVtLm5leHRFbGVtZW50U2libGluZywgJ21hcmdpblRvcCcpXG4gIGNvbnN0IGNvbGxhcHNlZFRvcE1hcmdpbiA9IE1hdGgubWF4KHBhcnNlRmxvYXQobWFyZ2luVG9wKSwgcHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tKVxuICBjb25zdCBjb2xsYXBzZWRCb3R0b21NYXJnaW4gPSBNYXRoLm1heChwYXJzZUZsb2F0KG1hcmdpbkJvdHRvbSksIG5leHRFbGVtU2libGluZ01hcmdpblRvcClcblxuICByZXR1cm4geyBtYXJnaW5Cb3R0b206IGNvbGxhcHNlZEJvdHRvbU1hcmdpbiwgbWFyZ2luVG9wOiBjb2xsYXBzZWRUb3BNYXJnaW4gfVxufVxuIl0sIm5hbWVzIjpbImdldENvbGxhcHNlZE1hcmdpbnMiLCJlbGVtIiwiZ2V0TWFyZ2luIiwiZWxlbWVudCIsIm1hcmdpbiIsInBhcnNlRmxvYXQiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwicHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRFbGVtU2libGluZ01hcmdpblRvcCIsIm5leHRFbGVtZW50U2libGluZyIsImNvbGxhcHNlZFRvcE1hcmdpbiIsIk1hdGgiLCJtYXgiLCJjb2xsYXBzZWRCb3R0b21NYXJnaW4iXSwibWFwcGluZ3MiOiI7Ozs7K0JBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxvQkFBb0JDLElBQWlCO0lBSW5ELE1BQU1DLFlBQVksQ0FBQ0MsU0FBeUJDLFNBQzFDRCxVQUFVRSxXQUFXQyxPQUFPQyxnQkFBZ0IsQ0FBQ0osUUFBUSxDQUFDQyxPQUFPLElBQUk7SUFFbkUsTUFBTSxFQUFFSSxZQUFZLEVBQUVDLFNBQVMsRUFBRSxHQUFHSCxPQUFPQyxnQkFBZ0IsQ0FBQ047SUFDNUQsTUFBTVMsOEJBQThCUixVQUFVRCxLQUFLVSxzQkFBc0IsRUFBRTtJQUMzRSxNQUFNQywyQkFBMkJWLFVBQVVELEtBQUtZLGtCQUFrQixFQUFFO0lBQ3BFLE1BQU1DLHFCQUFxQkMsS0FBS0MsR0FBRyxDQUFDWCxXQUFXSSxZQUFZQztJQUMzRCxNQUFNTyx3QkFBd0JGLEtBQUtDLEdBQUcsQ0FBQ1gsV0FBV0csZUFBZUk7SUFFakUsT0FBTztRQUFFSixjQUFjUztRQUF1QlIsV0FBV0s7SUFBbUI7QUFDOUUifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTopLevelNodeKeys.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAI5C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAEnE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getTopLevelNodeKeys", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getTopLevelNodeKeys;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _lexical = require("lexical");
|
|
12
|
+
function getTopLevelNodeKeys(editor) {
|
|
13
|
+
return editor.getEditorState().read(()=>(0, _lexical.$getRoot)().getChildrenKeys());
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9nZXRUb3BMZXZlbE5vZGVLZXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7ICRnZXRSb290IH0gZnJvbSAnbGV4aWNhbCdcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yOiBMZXhpY2FsRWRpdG9yKTogc3RyaW5nW10ge1xuICByZXR1cm4gZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiAkZ2V0Um9vdCgpLmdldENoaWxkcmVuS2V5cygpKVxufVxuIl0sIm5hbWVzIjpbImdldFRvcExldmVsTm9kZUtleXMiLCJlZGl0b3IiLCJnZXRFZGl0b3JTdGF0ZSIsInJlYWQiLCIkZ2V0Um9vdCIsImdldENoaWxkcmVuS2V5cyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFJZ0JBOzs7ZUFBQUE7Ozt5QkFGUztBQUVsQixTQUFTQSxvQkFBb0JDLE1BQXFCO0lBQ3ZELE9BQU9BLE9BQU9DLGNBQWMsR0FBR0MsSUFBSSxDQUFDLElBQU1DLElBQUFBLGlCQUFRLElBQUdDLGVBQWU7QUFDdEUifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isOnHandleElement.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/isOnHandleElement.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,GAAG,OAAO,CAE/F"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "isOnHandleElement", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return isOnHandleElement;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function isOnHandleElement(element, handleElementClassName) {
|
|
12
|
+
return !!element.closest(`.${handleElementClassName}`);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9pc09uSGFuZGxlRWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNPbkhhbmRsZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGhhbmRsZUVsZW1lbnRDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFlbGVtZW50LmNsb3Nlc3QoYC4ke2hhbmRsZUVsZW1lbnRDbGFzc05hbWV9YClcbn1cbiJdLCJuYW1lcyI6WyJpc09uSGFuZGxlRWxlbWVudCIsImVsZW1lbnQiLCJoYW5kbGVFbGVtZW50Q2xhc3NOYW1lIiwiY2xvc2VzdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLGtCQUFrQkMsT0FBb0IsRUFBRUMsc0JBQThCO0lBQ3BGLE9BQU8sQ0FBQyxDQUFDRCxRQUFRRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUVELHVCQUF1QixDQUFDO0FBQ3ZEIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setHandlePosition.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/setHandlePosition.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,WAAW,GAAG,IAAI,EAC9B,YAAY,EAAE,WAAW,EACzB,UAAU,EAAE,WAAW,EACvB,UAAU,GAAE,MAAU,QAsBvB"}
|