@payloadcms/richtext-lexical 3.0.0-beta.96 → 3.0.0-beta.98

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 (235) hide show
  1. package/dist/cell/index.d.ts.map +1 -1
  2. package/dist/cell/index.js +20 -68
  3. package/dist/cell/index.js.map +1 -1
  4. package/dist/exports/client/Field-WN5O3VIW.js +2 -0
  5. package/dist/exports/client/Field-WN5O3VIW.js.map +7 -0
  6. package/dist/exports/client/{RelationshipComponent-EZORSGUZ.js → RelationshipComponent-Z5SZ5FFT.js} +2 -2
  7. package/dist/exports/client/bundled.css +1 -1
  8. package/dist/exports/client/{chunk-TD7O23AB.js → chunk-366OGJYE.js} +2 -2
  9. package/dist/exports/client/{chunk-TD7O23AB.js.map → chunk-366OGJYE.js.map} +1 -1
  10. package/dist/exports/client/{chunk-YL453UOS.js → chunk-7UTZDNYS.js} +2 -2
  11. package/dist/exports/client/{chunk-YL453UOS.js.map → chunk-7UTZDNYS.js.map} +1 -1
  12. package/dist/exports/client/chunk-GK7ZKYHL.js +2 -0
  13. package/dist/exports/client/chunk-GK7ZKYHL.js.map +7 -0
  14. package/dist/exports/client/{chunk-UJDWBQ2K.js → chunk-GTKNWSQW.js} +2 -2
  15. package/dist/exports/client/{chunk-UJDWBQ2K.js.map → chunk-GTKNWSQW.js.map} +1 -1
  16. package/dist/exports/client/{chunk-V2LKLT2F.js → chunk-PECDZEZY.js} +3 -3
  17. package/dist/exports/client/{chunk-V2LKLT2F.js.map → chunk-PECDZEZY.js.map} +3 -3
  18. package/dist/exports/client/{chunk-OLSILJA6.js → chunk-TXEIKM77.js} +2 -2
  19. package/dist/exports/client/chunk-TXEIKM77.js.map +7 -0
  20. package/dist/exports/client/{component-LLWMZU6K.js → component-GAX6BHKZ.js} +2 -2
  21. package/dist/exports/client/{component-7RAP75FW.js → component-LHFD5Z33.js} +2 -2
  22. package/dist/exports/client/{component-7RAP75FW.js.map → component-LHFD5Z33.js.map} +1 -1
  23. package/dist/exports/client/component-UJILB3MH.js +2 -0
  24. package/dist/exports/client/component-UJILB3MH.js.map +7 -0
  25. package/dist/exports/client/{componentInline-YSHGRL2J.js → componentInline-JLMSR7BP.js} +2 -2
  26. package/dist/exports/client/index.d.ts +2 -3
  27. package/dist/exports/client/index.d.ts.map +1 -1
  28. package/dist/exports/client/index.js +12 -12
  29. package/dist/exports/client/index.js.map +4 -4
  30. package/dist/features/align/client/index.d.ts +1 -4
  31. package/dist/features/align/client/index.d.ts.map +1 -1
  32. package/dist/features/blockquote/client/index.d.ts +1 -4
  33. package/dist/features/blockquote/client/index.d.ts.map +1 -1
  34. package/dist/features/blocks/client/component/index.js.map +1 -1
  35. package/dist/features/blocks/client/index.d.ts +1 -4
  36. package/dist/features/blocks/client/index.d.ts.map +1 -1
  37. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  38. package/dist/features/blocks/server/index.js +25 -25
  39. package/dist/features/blocks/server/index.js.map +1 -1
  40. package/dist/features/blocks/server/nodes/BlocksNode.d.ts +1 -1
  41. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  42. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  43. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +1 -1
  44. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  45. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  46. package/dist/features/converters/html/converter/index.d.ts +5 -5
  47. package/dist/features/converters/html/converter/index.d.ts.map +1 -1
  48. package/dist/features/converters/html/converter/index.js.map +1 -1
  49. package/dist/features/converters/html/converter/types.d.ts +1 -1
  50. package/dist/features/converters/html/converter/types.d.ts.map +1 -1
  51. package/dist/features/converters/html/converter/types.js.map +1 -1
  52. package/dist/features/debug/testRecorder/client/index.d.ts +1 -4
  53. package/dist/features/debug/testRecorder/client/index.d.ts.map +1 -1
  54. package/dist/features/debug/treeView/client/index.d.ts +1 -4
  55. package/dist/features/debug/treeView/client/index.d.ts.map +1 -1
  56. package/dist/features/experimental_table/client/index.d.ts +1 -1
  57. package/dist/features/experimental_table/client/index.d.ts.map +1 -1
  58. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +2 -2
  59. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  60. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  61. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +1 -1
  62. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  63. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  64. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  65. package/dist/features/experimental_table/client/utils/debounce.js +4 -4
  66. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  67. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  68. package/dist/features/format/bold/feature.client.d.ts +1 -4
  69. package/dist/features/format/bold/feature.client.d.ts.map +1 -1
  70. package/dist/features/format/inlineCode/feature.client.d.ts +1 -4
  71. package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -1
  72. package/dist/features/format/italic/feature.client.d.ts +1 -4
  73. package/dist/features/format/italic/feature.client.d.ts.map +1 -1
  74. package/dist/features/format/strikethrough/feature.client.d.ts +1 -4
  75. package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -1
  76. package/dist/features/format/subscript/feature.client.d.ts +1 -4
  77. package/dist/features/format/subscript/feature.client.d.ts.map +1 -1
  78. package/dist/features/format/superscript/feature.client.d.ts +1 -4
  79. package/dist/features/format/superscript/feature.client.d.ts.map +1 -1
  80. package/dist/features/format/underline/feature.client.d.ts +1 -4
  81. package/dist/features/format/underline/feature.client.d.ts.map +1 -1
  82. package/dist/features/heading/client/index.d.ts +1 -4
  83. package/dist/features/heading/client/index.d.ts.map +1 -1
  84. package/dist/features/horizontalRule/client/index.d.ts +1 -4
  85. package/dist/features/horizontalRule/client/index.d.ts.map +1 -1
  86. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  87. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +1 -1
  88. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  89. package/dist/features/indent/client/index.d.ts +1 -4
  90. package/dist/features/indent/client/index.d.ts.map +1 -1
  91. package/dist/features/link/client/index.d.ts +1 -13
  92. package/dist/features/link/client/index.d.ts.map +1 -1
  93. package/dist/features/link/client/index.js +1 -1
  94. package/dist/features/link/client/index.js.map +1 -1
  95. package/dist/features/link/client/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  96. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  97. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  98. package/dist/features/link/nodes/LinkNode.js +1 -1
  99. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  100. package/dist/features/lists/checklist/client/index.d.ts +1 -4
  101. package/dist/features/lists/checklist/client/index.d.ts.map +1 -1
  102. package/dist/features/lists/orderedList/client/index.d.ts +1 -4
  103. package/dist/features/lists/orderedList/client/index.d.ts.map +1 -1
  104. package/dist/features/lists/unorderedList/client/index.d.ts +1 -4
  105. package/dist/features/lists/unorderedList/client/index.d.ts.map +1 -1
  106. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +1 -4
  107. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
  108. package/dist/features/migrations/slateToLexical/feature.client.d.ts +1 -4
  109. package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
  110. package/dist/features/migrations/slateToLexical/feature.client.js +1 -3
  111. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  112. package/dist/features/paragraph/client/index.d.ts +1 -4
  113. package/dist/features/paragraph/client/index.d.ts.map +1 -1
  114. package/dist/features/relationship/client/index.d.ts +2 -17
  115. package/dist/features/relationship/client/index.d.ts.map +1 -1
  116. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +1 -1
  117. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  118. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  119. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +1 -1
  120. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  121. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  122. package/dist/features/toolbars/fixed/client/Toolbar/index.js +1 -1
  123. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  124. package/dist/features/toolbars/fixed/client/index.d.ts +1 -4
  125. package/dist/features/toolbars/fixed/client/index.d.ts.map +1 -1
  126. package/dist/features/toolbars/inline/client/Toolbar/index.js +1 -1
  127. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  128. package/dist/features/toolbars/inline/client/index.d.ts +1 -4
  129. package/dist/features/toolbars/inline/client/index.d.ts.map +1 -1
  130. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +2 -2
  131. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  132. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +1 -1
  133. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  134. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +2 -2
  135. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  136. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +6 -6
  137. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  138. package/dist/features/typesClient.d.ts +10 -11
  139. package/dist/features/typesClient.d.ts.map +1 -1
  140. package/dist/features/typesClient.js.map +1 -1
  141. package/dist/features/typesServer.d.ts +10 -10
  142. package/dist/features/typesServer.d.ts.map +1 -1
  143. package/dist/features/typesServer.js.map +1 -1
  144. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  145. package/dist/features/upload/client/component/index.js +17 -18
  146. package/dist/features/upload/client/component/index.js.map +1 -1
  147. package/dist/features/upload/client/feature.client.d.ts +1 -4
  148. package/dist/features/upload/client/feature.client.d.ts.map +1 -1
  149. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  150. package/dist/features/upload/client/nodes/UploadNode.js +1 -1
  151. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  152. package/dist/field/Field.js +1 -1
  153. package/dist/field/Field.js.map +1 -1
  154. package/dist/field/bundled.css +1 -1
  155. package/dist/field/index.d.ts.map +1 -1
  156. package/dist/field/index.js +63 -72
  157. package/dist/field/index.js.map +1 -1
  158. package/dist/index.d.ts +3 -3
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +3 -3
  161. package/dist/index.js.map +1 -1
  162. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  163. package/dist/lexical/LexicalEditor.js +5 -5
  164. package/dist/lexical/LexicalEditor.js.map +1 -1
  165. package/dist/lexical/LexicalProvider.js +1 -1
  166. package/dist/lexical/LexicalProvider.js.map +1 -1
  167. package/dist/lexical/config/client/EditorConfigProvider.d.ts +1 -1
  168. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  169. package/dist/lexical/config/client/EditorConfigProvider.js +1 -1
  170. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  171. package/dist/lexical/config/client/loader.d.ts +1 -3
  172. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  173. package/dist/lexical/config/client/loader.js +7 -19
  174. package/dist/lexical/config/client/loader.js.map +1 -1
  175. package/dist/lexical/config/client/sanitize.d.ts +1 -1
  176. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  177. package/dist/lexical/config/client/sanitize.js +2 -2
  178. package/dist/lexical/config/client/sanitize.js.map +1 -1
  179. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +3 -3
  180. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  181. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +2 -2
  182. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  183. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +1 -1
  184. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  185. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  186. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  187. package/dist/lexical/plugins/SlashMenu/index.js +1 -1
  188. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  189. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  190. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  191. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  192. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +9 -7
  193. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  194. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  195. package/dist/lexical/utils/nodeFormat.d.ts +2 -2
  196. package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
  197. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  198. package/dist/lexical/utils/rect.d.ts.map +1 -1
  199. package/dist/lexical/utils/rect.js.map +1 -1
  200. package/dist/types.d.ts +3 -4
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/types.js.map +1 -1
  203. package/dist/utilities/createClientFeature.d.ts +3 -5
  204. package/dist/utilities/createClientFeature.d.ts.map +1 -1
  205. package/dist/utilities/createClientFeature.js +1 -4
  206. package/dist/utilities/createClientFeature.js.map +1 -1
  207. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  208. package/dist/utilities/generateComponentMap.d.ts.map +1 -1
  209. package/dist/utilities/generateComponentMap.js +10 -17
  210. package/dist/utilities/generateComponentMap.js.map +1 -1
  211. package/dist/validate/index.js +1 -1
  212. package/dist/validate/index.js.map +1 -1
  213. package/dist/validate/validateNodes.d.ts +2 -2
  214. package/dist/validate/validateNodes.d.ts.map +1 -1
  215. package/dist/validate/validateNodes.js +2 -2
  216. package/dist/validate/validateNodes.js.map +1 -1
  217. package/package.json +7 -7
  218. package/dist/exports/client/Field-E27BVLS5.js +0 -2
  219. package/dist/exports/client/Field-E27BVLS5.js.map +0 -7
  220. package/dist/exports/client/chunk-OLSILJA6.js.map +0 -7
  221. package/dist/exports/client/chunk-ZH3MUMBJ.js +0 -2
  222. package/dist/exports/client/chunk-ZH3MUMBJ.js.map +0 -7
  223. package/dist/exports/client/component-2YLEVOFH.js +0 -2
  224. package/dist/exports/client/component-2YLEVOFH.js.map +0 -7
  225. package/dist/features/createClientComponent.d.ts +0 -7
  226. package/dist/features/createClientComponent.d.ts.map +0 -1
  227. package/dist/features/createClientComponent.js +0 -13
  228. package/dist/features/createClientComponent.js.map +0 -1
  229. package/dist/features/createFeaturePropComponent.d.ts +0 -6
  230. package/dist/features/createFeaturePropComponent.d.ts.map +0 -1
  231. package/dist/features/createFeaturePropComponent.js +0 -19
  232. package/dist/features/createFeaturePropComponent.js.map +0 -1
  233. /package/dist/exports/client/{RelationshipComponent-EZORSGUZ.js.map → RelationshipComponent-Z5SZ5FFT.js.map} +0 -0
  234. /package/dist/exports/client/{component-LLWMZU6K.js.map → component-GAX6BHKZ.js.map} +0 -0
  235. /package/dist/exports/client/{componentInline-YSHGRL2J.js.map → componentInline-JLMSR7BP.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/lexical/nodes/index.ts", "../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx", "../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx", "../../../src/lexical/utils/guard.ts", "../../../src/lexical/utils/point.ts", "../../../src/lexical/utils/rect.ts"],
4
- "sourcesContent": ["import type { Klass, LexicalNode, LexicalNodeReplacement } from 'lexical'\n\nimport type { SanitizedClientEditorConfig, SanitizedServerEditorConfig } from '../config/types.js'\n\nexport function getEnabledNodes({\n editorConfig,\n}: {\n editorConfig: SanitizedClientEditorConfig | SanitizedServerEditorConfig\n}): Array<Klass<LexicalNode> | LexicalNodeReplacement> {\n return editorConfig.features.nodes.map((node) => {\n if ('node' in node) {\n return node.node\n }\n return node\n })\n}\n", "'use client'\nimport type {\n LexicalCommand,\n LexicalEditor,\n ParagraphNode,\n RangeSelection,\n TextNode,\n} from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n createCommand,\n} from 'lexical'\nimport { type JSX, useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = editorWindow.getSelection()\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): null | string {\n let text = null\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n onSelectItem: (\n item: SlashMenuItem,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groups,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n onSelectItem,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === null ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groups={groups}\n menuRenderFn={menuRenderFn}\n onSelectItem={onSelectItem}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n", "'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, ReactPortal, RefObject } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n createCommand,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: RefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n selectedItemKey: null | string\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | ReactPortal | null\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) {\n return\n }\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | null {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return null\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return null\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElement: HTMLElement | null,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.unobserve(targetElement)\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [targetElement, editor, onVisibilityChange, onReposition, resolution])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n onSelectItem,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: RefObject<HTMLElement>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onSelectItem: (\n item: SlashMenuItem,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n onSelectItem(\n selectedItem,\n textNodeContainingQuery,\n close,\n resolution.match ? resolution.match.matchingString : '',\n )\n })\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectItem, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectItemAndCleanUp,\n selectedItemKey,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): RefObject<HTMLElement> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement>(document.createElement('div'))\n const positionMenu = useCallback(() => {\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n if (left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('id', 'slash-menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n anchorElem.append(containerDiv)\n }\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef.current, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n", "'use client'\nexport function isHTMLElement(x: unknown): x is HTMLElement {\n return x instanceof HTMLElement\n}\n", "'use client'\nexport class Point {\n private readonly _x: number\n\n private readonly _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n public calcDeltaXTo({ x }: Point): number {\n return this.x - x\n }\n\n public calcDeltaYTo({ y }: Point): number {\n return this.y - y\n }\n\n public calcDistanceTo(point: Point): number {\n return Math.sqrt(Math.pow(this.calcDeltaXTo(point), 2) + Math.pow(this.calcDeltaYTo(point), 2))\n }\n\n public calcHorizontalDistanceTo(point: Point): number {\n return Math.abs(this.calcDeltaXTo(point))\n }\n\n public calcVerticalDistance(point: Point): number {\n return Math.abs(this.calcDeltaYTo(point))\n }\n\n public equals({ x, y }: Point): boolean {\n return this.x === x && this.y === y\n }\n\n get x(): number {\n return this._x\n }\n\n get y(): number {\n return this._y\n }\n}\n\nexport function isPoint(x: unknown): x is Point {\n return x instanceof Point\n}\n", "'use client'\nimport { type Point, isPoint } from './point.js'\n\ninterface ContainsPointReturn {\n reason: {\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n }\n result: boolean\n}\n\nexport class Rect {\n private readonly _bottom: number\n\n private readonly _left: number\n\n private readonly _right: number\n\n private readonly _top: number\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top]\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left]\n\n this._top = physicTop\n this._right = physicRight\n this._left = physicLeft\n this._bottom = physicBottom\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { height, left, top, width } = dom.getBoundingClientRect()\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromDOMRect(domRect: DOMRect): Rect {\n const { height, left, top, width } = domRect\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height)\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { x: left, y: top } = startPoint\n const { x: right, y: bottom } = endPoint\n return Rect.fromLTRB(left, top, right, bottom)\n }\n\n public contains({ x, y }: Point): ContainsPointReturn\n\n public contains({ bottom, left, right, top }: Rect): boolean\n\n public contains(target: Point | Rect): ContainsPointReturn | boolean {\n if (isPoint(target)) {\n const { x, y } = target\n\n const isOnTopSide = y < this._top\n const isOnBottomSide = y > this._bottom\n const isOnLeftSide = x < this._left\n const isOnRightSide = x > this._right\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide,\n },\n result,\n }\n }\n const { bottom, left, right, top } = target\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n )\n }\n\n public distanceFromPoint(point: Point): {\n distance: number\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n } {\n const containsResult = this.contains(point)\n if (containsResult.result) {\n return {\n distance: 0,\n isOnBottomSide: containsResult.reason.isOnBottomSide,\n isOnLeftSide: containsResult.reason.isOnLeftSide,\n isOnRightSide: containsResult.reason.isOnRightSide,\n isOnTopSide: containsResult.reason.isOnTopSide,\n }\n }\n\n let dx = 0 // Horizontal distance to the closest edge\n let dy = 0 // Vertical distance to the closest edge\n\n // If the point is to the left of the rectangle\n if (point.x < this._left) {\n dx = this._left - point.x\n }\n // If the point is to the right of the rectangle\n else if (point.x > this._right) {\n dx = point.x - this._right\n }\n\n // If the point is above the rectangle\n if (point.y < this._top) {\n dy = this._top - point.y\n }\n // If the point is below the rectangle\n else if (point.y > this._bottom) {\n dy = point.y - this._bottom\n }\n\n // Use the Pythagorean theorem to calculate the distance\n return {\n distance: Math.sqrt(dx * dx + dy * dy),\n isOnBottomSide: point.y > this._bottom,\n isOnLeftSide: point.x < this._left,\n isOnRightSide: point.x > this._right,\n isOnTopSide: point.y < this._top,\n }\n }\n\n public equals({ bottom, left, right, top }: Rect): boolean {\n return (\n top === this._top && bottom === this._bottom && left === this._left && right === this._right\n )\n }\n\n public generateNewRect({\n bottom = this.bottom,\n left = this.left,\n right = this.right,\n top = this.top,\n }): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { height: h1, left: x1, top: y1, width: w1 } = rect\n const { height: h2, left: x2, top: y2, width: w2 } = this\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2\n const minX = x1 <= x2 ? x1 : x2\n const minY = y1 <= y2 ? y1 : y2\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2\n }\n\n get bottom(): number {\n return this._bottom\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top)\n }\n\n get left(): number {\n return this._left\n }\n\n get right(): number {\n return this._right\n }\n\n get top(): number {\n return this._top\n }\n\n get width(): number {\n return Math.abs(this._left - this._right)\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["getEnabledNodes", "editorConfig", "features", "nodes", "map", "node", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "$isTextNode", "COMMAND_PRIORITY_LOW", "createCommand", "useEffect", "useState", "React", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_LOW", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_TAB_COMMAND", "createCommand", "useCallback", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "baseClass", "scrollIntoViewIfNeeded", "target", "typeaheadContainerNode", "document", "getElementById", "typeaheadRect", "getBoundingClientRect", "top", "height", "window", "innerHeight", "scrollIntoView", "block", "getFullMatchOffset", "documentText", "entryText", "offset", "triggerOffset", "i", "length", "substring", "$splitNodeContainingQuery", "match", "selection", "isCollapsed", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "selectionOffset", "textContent", "getTextContent", "slice", "characterOffset", "replaceableString", "queryOffset", "matchingString", "startOffset", "newNode", "splitText", "getScrollParent", "element", "includeHidden", "style", "getComputedStyle", "excludeStaticParent", "position", "overflowRegex", "body", "parent", "parentElement", "test", "overflow", "overflowY", "overflowX", "isTriggerVisibleInNearestScrollContainer", "targetElement", "containerElement", "tRect", "cRect", "bottom", "useDynamicPositioning", "resolution", "onReposition", "onVisibilityChange", "$", "editor", "t0", "t1", "rootElement", "getRootElement", "rootScrollParent", "ticking", "previousIsInView", "handleScroll", "requestAnimationFrame", "isInView", "resizeObserver", "ResizeObserver", "addEventListener", "capture", "passive", "observe", "unobserve", "removeEventListener", "SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND", "LexicalMenu", "anchorElementRef", "close", "groups", "menuRenderFn", "onSelectItem", "shouldSplitNodeWithQuery", "selectedItemKey", "setSelectedItemKey", "updateSelectedItem", "item", "rootElem", "setAttribute", "key", "setSelectedItemKeyToFirstMatchingItem", "allItems", "flatMap", "group", "items", "firstMatchingItem", "selectItemAndCleanUp", "selectedItem", "update", "textNodeContainingQuery", "removeAttribute", "registerCommand", "ref", "current", "payload", "event", "selectedIndex", "findIndex", "newSelectedIndex", "newSelectedItem", "dispatchCommand", "index", "preventDefault", "stopImmediatePropagation", "find", "listItemProps", "useMenuAnchorRef", "anchorElem", "setResolution", "className", "createElement", "positionMenu", "containerDiv", "VERTICAL_OFFSET", "menuEle", "firstChild", "width", "getRect", "left", "rawTop", "scrollY", "scrollX", "menuRect", "menuHeight", "menuWidth", "rootElementRect", "right", "wouldGoOffBottomOfScreen", "wouldGoOffTopOfScreen", "margin", "isConnected", "display", "append", "remove", "PUNCTUATION", "getTextUpToAnchor", "selection", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "anchorOffset", "offset", "getTextContent", "slice", "tryToPositionRange", "leadOffset", "range", "editorWindow", "domSelection", "getSelection", "isCollapsed", "startOffset", "endOffset", "setStart", "setEnd", "getQueryTextForSearch", "editor", "text", "getEditorState", "read", "$getSelection", "$isRangeSelection", "isSelectionOnEntityBoundary", "prevSibling", "getPreviousSibling", "$isTextNode", "isTextEntity", "startTransition", "callback", "ENABLE_SLASH_MENU_COMMAND", "createCommand", "LexicalTypeaheadMenuPlugin", "t0", "$", "_c", "anchorClassName", "anchorElem", "groups", "menuRenderFn", "onClose", "onOpen", "onQueryChange", "onSelectItem", "triggerFn", "useLexicalComposerContext", "resolution", "setResolution", "useState", "anchorElementRef", "useMenuAnchorRef", "t1", "closeTypeahead", "t2", "res", "openTypeahead", "t3", "t4", "mergeRegister", "registerCommand", "t5", "node", "match", "matchingString", "replaceableString", "_window", "window", "document", "createRange", "getRect", "getBoundingClientRect", "COMMAND_PRIORITY_LOW", "useEffect", "updateListener", "editorWindow_0", "range_0", "match_0", "query", "removeUpdateListener", "registerUpdateListener", "t6", "t7", "_jsx", "LexicalMenu", "close", "shouldSplitNodeWithQuery", "isHTMLElement", "x", "HTMLElement", "Point", "_x", "_y", "constructor", "x", "y", "calcDeltaXTo", "calcDeltaYTo", "calcDistanceTo", "point", "Math", "sqrt", "pow", "calcHorizontalDistanceTo", "abs", "calcVerticalDistance", "equals", "isPoint", "Rect", "_bottom", "_left", "_right", "_top", "constructor", "left", "top", "right", "bottom", "physicTop", "physicBottom", "physicLeft", "physicRight", "fromDOM", "dom", "height", "width", "getBoundingClientRect", "fromLWTH", "fromDOMRect", "domRect", "fromLTRB", "fromPoints", "startPoint", "endPoint", "x", "y", "contains", "target", "isPoint", "isOnTopSide", "isOnBottomSide", "isOnLeftSide", "isOnRightSide", "reason", "result", "distanceFromPoint", "point", "containsResult", "distance", "dx", "dy", "Math", "sqrt", "equals", "generateNewRect", "intersectsWith", "rect", "h1", "x1", "y1", "w1", "h2", "x2", "y2", "w2", "maxX", "maxY", "minX", "minY", "abs"]
7
- }
@@ -1,2 +0,0 @@
1
- "use client";import{a as U,b as A,c as P,f as I}from"./chunk-TD7O23AB.js";import{b as v}from"./chunk-OLSILJA6.js";import{jsx as t,jsxs as s}from"react/jsx-runtime";import{useLexicalComposerContext as te}from"@lexical/react/LexicalComposerContext.js";import{useLexicalNodeSelection as oe}from"@lexical/react/useLexicalNodeSelection.js";import{mergeRegister as le}from"@lexical/utils";import{getTranslation as K}from"@payloadcms/translations";import{Button as w,DrawerToggler as ae,File as re,formatDrawerSlug as ie,useConfig as ne,useDocumentDrawer as se,useEditDepth as de,useModal as ce,usePayloadAPI as ue,useTranslation as me}from"@payloadcms/ui";import{$getNodeByKey as N,$getSelection as pe,$isNodeSelection as fe,CLICK_COMMAND as ge,COMMAND_PRIORITY_LOW as S,KEY_BACKSPACE_COMMAND as he,KEY_DELETE_COMMAND as _e}from"lexical";import{useCallback as d,useEffect as Ce,useId as De,useReducer as be,useRef as ve,useState as we}from"react";var o="lexical-upload",j={depth:0},Ne=c=>{let{data:{fields:B,relationTo:$,value:n},nodeKey:a}=c;if(typeof n=="object")throw new Error("Upload value should be a string or number. The Lexical Upload component should not receive the populated value object.");let{config:{collections:F,routes:{api:k},serverURL:W}}=ne(),h=ve(null),{closeModal:x}=ce(),{uuid:Y}=v(),z=de(),[l]=te(),[r,u,_]=oe(a),{editorConfig:H,field:C}=v(),{i18n:R,t:m}=me(),[E,q]=be(e=>e+1,0),[i]=we(()=>F.find(e=>e.slug===$)),G=De(),p=ie({slug:"lexical-upload-drawer-"+Y+G,depth:z}),[J,Q,{closeDrawer:y}]=se({id:n,collectionSlug:i.slug}),[{data:f},{setParams:M}]=ue(`${W}${k}/${i.slug}/${n}`,{initialParams:j}),L=f?.thumbnailURL||f?.url,V=d(()=>{l.update(()=>{N(a).remove()})},[l,a]),X=d(e=>{M({...j,cacheBust:E}),q(),y()},[M,E,y]),D=d(e=>{if(r&&fe(pe())){e.preventDefault();let g=N(a);if(I(g))return g.remove(),!0}return!1},[r,a]),O=d(e=>e.target===h.current||h.current?.contains(e.target)?(e.shiftKey?u(!r):r||(_(),u(!0)),!0):!1,[r,u,_]);Ce(()=>le(l.registerCommand(ge,O,S),l.registerCommand(_e,D,S),l.registerCommand(he,D,S)),[_,l,r,a,D,u,O]);let T=H?.resolvedFeatureMap?.get("upload")?.sanitizedClientFeatureProps.collections?.[i.slug]?.hasExtraFields,Z=d((e,g)=>{l.update(()=>{let b=N(a);if(b){let ee={...b.getData(),fields:g};b.setData(ee)}}),x(p)},[x,l,p,a]);return s("div",{className:[o,r&&`${o}--selected`].filter(Boolean).join(" "),contentEditable:!1,ref:h,children:[s("div",{className:`${o}__card`,children:[s("div",{className:`${o}__topRow`,children:[t("div",{className:`${o}__thumbnail`,children:L?t("img",{alt:f?.filename,"data-lexical-upload-id":n,"data-lexical-upload-relation-to":$,src:L}):t(re,{})}),s("div",{className:`${o}__topRowRightPanel`,children:[t("div",{className:`${o}__collectionLabel`,children:K(i.labels.singular,R)}),l.isEditable()&&s("div",{className:`${o}__actions`,children:[T?t(ae,{className:`${o}__upload-drawer-toggler`,disabled:C?.admin?.readOnly,slug:p,children:t(w,{buttonStyle:"icon-label",el:"div",icon:"edit",onClick:e=>{e.preventDefault()},round:!0,tooltip:m("fields:editRelationship")})}):null,t(w,{buttonStyle:"icon-label",disabled:C?.admin?.readOnly,el:"div",icon:"swap",onClick:()=>{l.dispatchCommand(P,{replace:{nodeKey:a}})},round:!0,tooltip:m("fields:swapUpload")}),t(w,{buttonStyle:"icon-label",className:`${o}__removeButton`,disabled:C?.admin?.readOnly,icon:"x",onClick:e=>{e.preventDefault(),V()},round:!0,tooltip:m("fields:removeUpload")})]})]})]}),t("div",{className:`${o}__bottomRow`,children:t(Q,{className:`${o}__doc-drawer-toggler`,children:t("strong",{children:f?.filename})})})]}),n&&t(J,{onSave:X}),T?t(U,{data:B,drawerSlug:p,drawerTitle:m("general:editLabel",{label:K(i.labels.singular,R)}),featureKey:"upload",handleDrawerSubmit:Z,schemaPathSuffix:i.slug}):null]})},Ke=c=>t(A,{...c,uploads:!0,children:t(Ne,{...c})});export{Ke as UploadComponent};
2
- //# sourceMappingURL=component-2YLEVOFH.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/features/upload/client/component/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport type { ClientCollectionConfig, Data } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n DrawerToggler,\n File,\n formatDrawerSlug,\n useConfig,\n useDocumentDrawer,\n useEditDepth,\n useModal,\n usePayloadAPI,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useId, useReducer, useRef, useState } from 'react'\n\nimport type { ClientComponentProps } from '../../../typesClient.js'\nimport type { UploadData } from '../../server/nodes/UploadNode.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadNode } from '../nodes/UploadNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { $isUploadNode } from '../nodes/UploadNode.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\nexport type ElementProps = {\n data: UploadData\n nodeKey: string\n}\n\nconst Component: React.FC<ElementProps> = (props) => {\n const {\n data: { fields, relationTo, value },\n nodeKey,\n } = props\n\n if (typeof value === 'object') {\n throw new Error(\n 'Upload value should be a string or number. The Lexical Upload component should not receive the populated value object.',\n )\n }\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const uploadRef = useRef<HTMLDivElement | null>(null)\n const { closeModal } = useModal()\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const { editorConfig, field } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection] = useState<ClientCollectionConfig>(() =>\n collections.find((coll) => coll.slug === relationTo),\n )\n\n const componentID = useId()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-upload-drawer-` + uuid + componentID, // There can be multiple upload components, each with their own drawer, in one single editor => separate them by componentID\n depth: editDepth,\n })\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey).remove()\n })\n }, [editor, nodeKey])\n\n const updateUpload = useCallback(\n (data: Data) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDrawer()\n },\n [setParams, cacheBust, closeDrawer],\n )\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n event.preventDefault()\n const node = $getNodeByKey(nodeKey)\n if ($isUploadNode(node)) {\n node.remove()\n return true\n }\n }\n return false\n },\n [isSelected, nodeKey],\n )\n const onClick = useCallback(\n (event: MouseEvent) => {\n // Check if uploadRef.target or anything WITHIN uploadRef.target was clicked\n if (event.target === uploadRef.current || uploadRef.current?.contains(event.target as Node)) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n const hasExtraFields = (\n editorConfig?.resolvedFeatureMap?.get('upload')\n ?.sanitizedClientFeatureProps as ClientComponentProps<UploadFeaturePropsClient>\n ).collections?.[relatedCollection.slug]?.hasExtraFields\n\n const onExtraFieldsDrawerSubmit = useCallback(\n (_, data) => {\n // Update lexical node (with key nodeKey) with new data\n editor.update(() => {\n const uploadNode: UploadNode | null = $getNodeByKey(nodeKey)\n if (uploadNode) {\n const newData: UploadData = {\n ...uploadNode.getData(),\n fields: data,\n }\n uploadNode.setData(newData)\n }\n })\n\n closeModal(drawerSlug)\n },\n [closeModal, editor, drawerSlug, nodeKey],\n )\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n ref={uploadRef}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__topRow`}>\n {/* TODO: migrate to use @payloadcms/ui/elements/Thumbnail component */}\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC ? (\n <img\n alt={data?.filename}\n data-lexical-upload-id={value}\n data-lexical-upload-relation-to={relationTo}\n src={thumbnailSRC}\n />\n ) : (\n <File />\n )}\n </div>\n <div className={`${baseClass}__topRowRightPanel`}>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n {hasExtraFields ? (\n <DrawerToggler\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={field?.admin?.readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n el=\"div\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n }}\n round\n tooltip={t('fields:editRelationship')}\n />\n </DrawerToggler>\n ) : null}\n\n <Button\n buttonStyle=\"icon-label\"\n disabled={field?.admin?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }}\n round\n tooltip={t('fields:swapUpload')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n tooltip={t('fields:removeUpload')}\n />\n </div>\n )}\n </div>\n </div>\n <div className={`${baseClass}__bottomRow`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong>{data?.filename}</strong>\n </DocumentDrawerToggler>\n </div>\n </div>\n {value && <DocumentDrawer onSave={updateUpload} />}\n {hasExtraFields ? (\n <FieldsDrawer\n data={fields}\n drawerSlug={drawerSlug}\n drawerTitle={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n featureKey=\"upload\"\n handleDrawerSubmit={onExtraFieldsDrawerSubmit}\n schemaPathSuffix={relatedCollection.slug}\n />\n ) : null}\n </div>\n )\n}\n\nexport const UploadComponent = (props: ElementProps): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <Component {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["useLexicalComposerContext", "useLexicalNodeSelection", "mergeRegister", "getTranslation", "Button", "DrawerToggler", "File", "formatDrawerSlug", "useConfig", "useDocumentDrawer", "useEditDepth", "useModal", "usePayloadAPI", "useTranslation", "$getNodeByKey", "$getSelection", "$isNodeSelection", "CLICK_COMMAND", "COMMAND_PRIORITY_LOW", "KEY_BACKSPACE_COMMAND", "KEY_DELETE_COMMAND", "useCallback", "useEffect", "useId", "useReducer", "useRef", "useState", "baseClass", "initialParams", "depth", "Component", "props", "data", "fields", "relationTo", "value", "nodeKey", "Error", "config", "collections", "routes", "api", "serverURL", "useConfig", "uploadRef", "useRef", "closeModal", "useModal", "uuid", "useEditorConfigContext", "editDepth", "useEditDepth", "editor", "useLexicalComposerContext", "isSelected", "setSelected", "clearSelection", "useLexicalNodeSelection", "editorConfig", "field", "i18n", "t", "useTranslation", "cacheBust", "dispatchCacheBust", "useReducer", "state", "relatedCollection", "useState", "find", "coll", "slug", "componentID", "useId", "drawerSlug", "formatDrawerSlug", "DocumentDrawer", "DocumentDrawerToggler", "closeDrawer", "useDocumentDrawer", "id", "collectionSlug", "setParams", "usePayloadAPI", "thumbnailSRC", "thumbnailURL", "url", "removeUpload", "useCallback", "update", "$getNodeByKey", "remove", "updateUpload", "$onDelete", "event", "$isNodeSelection", "$getSelection", "preventDefault", "node", "$isUploadNode", "onClick", "target", "current", "contains", "shiftKey", "useEffect", "mergeRegister", "registerCommand", "CLICK_COMMAND", "COMMAND_PRIORITY_LOW", "KEY_DELETE_COMMAND", "KEY_BACKSPACE_COMMAND", "hasExtraFields", "resolvedFeatureMap", "get", "sanitizedClientFeatureProps", "onExtraFieldsDrawerSubmit", "_", "uploadNode", "newData", "getData", "setData", "_jsxs", "className", "filter", "Boolean", "join", "contentEditable", "ref", "_jsx", "alt", "filename", "src", "File", "getTranslation", "labels", "singular", "isEditable", "DrawerToggler", "disabled", "admin", "readOnly", "Button", "buttonStyle", "el", "icon", "e", "round", "tooltip", "dispatchCommand", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "replace", "onSave", "FieldsDrawer", "drawerTitle", "label", "featureKey", "handleDrawerSubmit", "schemaPathSuffix", "UploadComponent", "EnabledRelationshipsCondition", "uploads"]
7
- }
@@ -1,7 +0,0 @@
1
- import type React from 'react';
2
- import type { ClientComponentProps, FeatureProviderProviderClient } from './typesClient.js';
3
- /**
4
- * Utility function to create a client component for the client feature
5
- */
6
- export declare const createClientComponent: <ClientFeatureProps>(clientFeature: FeatureProviderProviderClient<ClientFeatureProps>) => React.FC<ClientComponentProps<ClientFeatureProps>>;
7
- //# sourceMappingURL=createClientComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createClientComponent.d.ts","sourceRoot":"","sources":["../../src/features/createClientComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAI3F;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,kBAAkB,iBACvC,6BAA6B,CAAC,kBAAkB,CAAC,KAC/D,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAKnD,CAAA"}
@@ -1,13 +0,0 @@
1
- 'use client';
2
-
3
- import { useLexicalFeature } from '../utilities/useLexicalFeature.js';
4
- /**
5
- * Utility function to create a client component for the client feature
6
- */
7
- export const createClientComponent = clientFeature => {
8
- return props => {
9
- useLexicalFeature(props.featureKey, clientFeature(props));
10
- return null;
11
- };
12
- };
13
- //# sourceMappingURL=createClientComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createClientComponent.js","names":["useLexicalFeature","createClientComponent","clientFeature","props","featureKey"],"sources":["../../src/features/createClientComponent.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport type { ClientComponentProps, FeatureProviderProviderClient } from './typesClient.js'\n\nimport { useLexicalFeature } from '../utilities/useLexicalFeature.js'\n\n/**\n * Utility function to create a client component for the client feature\n */\nexport const createClientComponent = <ClientFeatureProps,>(\n clientFeature: FeatureProviderProviderClient<ClientFeatureProps>,\n): React.FC<ClientComponentProps<ClientFeatureProps>> => {\n return (props) => {\n useLexicalFeature(props.featureKey, clientFeature(props))\n return null\n }\n}\n"],"mappings":"AAAA;;AAMA,SAASA,iBAAiB,QAAQ;AAElC;;;AAGA,OAAO,MAAMC,qBAAA,GACXC,aAAA;EAEA,OAAQC,KAAA;IACNH,iBAAA,CAAkBG,KAAA,CAAMC,UAAU,EAAEF,aAAA,CAAcC,KAAA;IAClD,OAAO;EACT;AACF","ignoreList":[]}
@@ -1,6 +0,0 @@
1
- import type React from 'react';
2
- export declare const createFeaturePropComponent: <T = unknown>(prop: T) => React.FC<{
3
- componentKey: string;
4
- featureKey: string;
5
- }>;
6
- //# sourceMappingURL=createFeaturePropComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createFeaturePropComponent.d.ts","sourceRoot":"","sources":["../../src/features/createFeaturePropComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkB9B,eAAO,MAAM,0BAA0B,GAAI,CAAC,kBACpC,CAAC,KACN,KAAK,CAAC,EAAE,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAKvD,CAAA"}
@@ -1,19 +0,0 @@
1
- 'use client';
2
-
3
- import { useAddClientFunction, useFieldProps, useTableCell } from '@payloadcms/ui';
4
- const useLexicalFeatureProp = (featureKey, componentKey, prop) => {
5
- const {
6
- schemaPath: schemaPathFromFieldProps
7
- } = useFieldProps();
8
- const tableCell = useTableCell();
9
- const schemaPathFromCellProps = tableCell?.cellProps?.field?._schemaPath;
10
- const schemaPath = schemaPathFromCellProps || schemaPathFromFieldProps;
11
- useAddClientFunction(`lexicalFeature.${schemaPath}.${featureKey}.lexical_internal_components.${componentKey}`, prop);
12
- };
13
- export const createFeaturePropComponent = prop => {
14
- return props => {
15
- useLexicalFeatureProp(props.featureKey, props.componentKey, prop);
16
- return null;
17
- };
18
- };
19
- //# sourceMappingURL=createFeaturePropComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createFeaturePropComponent.js","names":["useAddClientFunction","useFieldProps","useTableCell","useLexicalFeatureProp","featureKey","componentKey","prop","schemaPath","schemaPathFromFieldProps","tableCell","schemaPathFromCellProps","cellProps","field","_schemaPath","createFeaturePropComponent","props"],"sources":["../../src/features/createFeaturePropComponent.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport { useAddClientFunction, useFieldProps, useTableCell } from '@payloadcms/ui'\n\nconst useLexicalFeatureProp = <T,>(featureKey: string, componentKey: string, prop: T) => {\n const { schemaPath: schemaPathFromFieldProps } = useFieldProps()\n const tableCell = useTableCell()\n\n const schemaPathFromCellProps = tableCell?.cellProps?.field?._schemaPath\n\n const schemaPath = schemaPathFromCellProps || schemaPathFromFieldProps // schemaPathFromCellProps needs to have priority, as there can be cells within fields (e.g. list drawers) and the cell schemaPath needs to be used there - not the parent field schemaPath. There cannot be fields within cells.\n\n useAddClientFunction(\n `lexicalFeature.${schemaPath}.${featureKey}.lexical_internal_components.${componentKey}`,\n prop,\n )\n}\n\nexport const createFeaturePropComponent = <T = unknown,>(\n prop: T,\n): React.FC<{ componentKey: string; featureKey: string }> => {\n return (props) => {\n useLexicalFeatureProp(props.featureKey, props.componentKey, prop)\n return null\n }\n}\n"],"mappings":"AAAA;;AAIA,SAASA,oBAAoB,EAAEC,aAAa,EAAEC,YAAY,QAAQ;AAElE,MAAMC,qBAAA,GAAwBA,CAAAC,UAAA,EAAAC,YAAA,EAAAC,IAAA;EAC5B;IAAAC,UAAA,EAAAC;EAAA,IAAiDP,aAAA;EACjD,MAAAQ,SAAA,GAAkBP,YAAA;EAElB,MAAAQ,uBAAA,GAAgCD,SAAA,EAAAE,SAAA,EAAAC,KAAA,EAAAC,WAAA;EAEhC,MAAAN,UAAA,GAAmBG,uBAAA,IAA2BF,wBAAA;EAE9CR,oBAAA,CACE,kBAAkBO,UAAA,IAAcH,UAAA,gCAA0CC,YAAA,EAAc,EACxFC,IAAA;AAAA,CAEJ;AAEA,OAAO,MAAMQ,0BAAA,GACXR,IAAA;EAEA,OAAQS,KAAA;IACNZ,qBAAA,CAAsBY,KAAA,CAAMX,UAAU,EAAEW,KAAA,CAAMV,YAAY,EAAEC,IAAA;IAC5D,OAAO;EACT;AACF","ignoreList":[]}