@payloadcms/richtext-lexical 3.0.0-alpha.41 → 3.0.0-alpha.43

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 (550) hide show
  1. package/components.js +1 -1
  2. package/dist/cell/index.js +1 -1
  3. package/dist/cell/index.js.map +1 -0
  4. package/dist/exports/components.js +1 -1
  5. package/dist/exports/components.js.map +1 -0
  6. package/dist/field/Field.js +1 -1
  7. package/dist/field/Field.js.map +1 -0
  8. package/dist/field/features/align/feature.client.js +1 -1
  9. package/dist/field/features/align/feature.client.js.map +1 -0
  10. package/dist/field/features/align/feature.server.js +1 -1
  11. package/dist/field/features/align/feature.server.js.map +1 -0
  12. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +1 -1
  13. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js.map +1 -0
  14. package/dist/field/features/blockquote/feature.client.js +1 -1
  15. package/dist/field/features/blockquote/feature.client.js.map +1 -0
  16. package/dist/field/features/blockquote/feature.server.js +1 -1
  17. package/dist/field/features/blockquote/feature.server.js.map +1 -0
  18. package/dist/field/features/blockquote/markdownTransformer.js +1 -1
  19. package/dist/field/features/blockquote/markdownTransformer.js.map +1 -0
  20. package/dist/field/features/blocks/component/BlockContent.js +1 -1
  21. package/dist/field/features/blocks/component/BlockContent.js.map +1 -0
  22. package/dist/field/features/blocks/component/FormSavePlugin.js +1 -1
  23. package/dist/field/features/blocks/component/FormSavePlugin.js.map +1 -0
  24. package/dist/field/features/blocks/component/index.js +1 -1
  25. package/dist/field/features/blocks/component/index.js.map +1 -0
  26. package/dist/field/features/blocks/drawer/index.js +1 -1
  27. package/dist/field/features/blocks/drawer/index.js.map +1 -0
  28. package/dist/field/features/blocks/feature.client.js +1 -1
  29. package/dist/field/features/blocks/feature.client.js.map +1 -0
  30. package/dist/field/features/blocks/feature.server.js +1 -1
  31. package/dist/field/features/blocks/feature.server.js.map +1 -0
  32. package/dist/field/features/blocks/nodes/BlocksNode.js +1 -1
  33. package/dist/field/features/blocks/nodes/BlocksNode.js.map +1 -0
  34. package/dist/field/features/blocks/plugin/commands.js +1 -1
  35. package/dist/field/features/blocks/plugin/commands.js.map +1 -0
  36. package/dist/field/features/blocks/plugin/index.js +1 -1
  37. package/dist/field/features/blocks/plugin/index.js.map +1 -0
  38. package/dist/field/features/blocks/populationPromise.js +1 -1
  39. package/dist/field/features/blocks/populationPromise.js.map +1 -0
  40. package/dist/field/features/blocks/validate.js +1 -1
  41. package/dist/field/features/blocks/validate.js.map +1 -0
  42. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +1 -1
  43. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js.map +1 -0
  44. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +1 -1
  45. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js.map +1 -0
  46. package/dist/field/features/converters/html/converter/converters/linebreak.js +1 -1
  47. package/dist/field/features/converters/html/converter/converters/linebreak.js.map +1 -0
  48. package/dist/field/features/converters/html/converter/converters/paragraph.js +1 -1
  49. package/dist/field/features/converters/html/converter/converters/paragraph.js.map +1 -0
  50. package/dist/field/features/converters/html/converter/converters/text.js +1 -1
  51. package/dist/field/features/converters/html/converter/converters/text.js.map +1 -0
  52. package/dist/field/features/converters/html/converter/defaultConverters.js +1 -1
  53. package/dist/field/features/converters/html/converter/defaultConverters.js.map +1 -0
  54. package/dist/field/features/converters/html/converter/index.js +1 -1
  55. package/dist/field/features/converters/html/converter/index.js.map +1 -0
  56. package/dist/field/features/converters/html/converter/types.js +1 -1
  57. package/dist/field/features/converters/html/converter/types.js.map +1 -0
  58. package/dist/field/features/converters/html/feature.server.js +1 -1
  59. package/dist/field/features/converters/html/feature.server.js.map +1 -0
  60. package/dist/field/features/converters/html/field/index.js +1 -1
  61. package/dist/field/features/converters/html/field/index.js.map +1 -0
  62. package/dist/field/features/createClientComponent.js +1 -1
  63. package/dist/field/features/createClientComponent.js.map +1 -0
  64. package/dist/field/features/createFeaturePropComponent.js +1 -1
  65. package/dist/field/features/createFeaturePropComponent.js.map +1 -0
  66. package/dist/field/features/debug/testrecorder/feature.client.js +1 -1
  67. package/dist/field/features/debug/testrecorder/feature.client.js.map +1 -0
  68. package/dist/field/features/debug/testrecorder/feature.server.js +1 -1
  69. package/dist/field/features/debug/testrecorder/feature.server.js.map +1 -0
  70. package/dist/field/features/debug/testrecorder/plugin/index.js +1 -1
  71. package/dist/field/features/debug/testrecorder/plugin/index.js.map +1 -0
  72. package/dist/field/features/debug/treeview/feature.client.js +1 -1
  73. package/dist/field/features/debug/treeview/feature.client.js.map +1 -0
  74. package/dist/field/features/debug/treeview/feature.server.js +1 -1
  75. package/dist/field/features/debug/treeview/feature.server.js.map +1 -0
  76. package/dist/field/features/debug/treeview/plugin/index.js +1 -1
  77. package/dist/field/features/debug/treeview/plugin/index.js.map +1 -0
  78. package/dist/field/features/format/bold/feature.client.js +1 -1
  79. package/dist/field/features/format/bold/feature.client.js.map +1 -0
  80. package/dist/field/features/format/bold/feature.server.js +1 -1
  81. package/dist/field/features/format/bold/feature.server.js.map +1 -0
  82. package/dist/field/features/format/bold/markdownTransformers.js +1 -1
  83. package/dist/field/features/format/bold/markdownTransformers.js.map +1 -0
  84. package/dist/field/features/format/common/floatingSelectToolbarSection.js +1 -1
  85. package/dist/field/features/format/common/floatingSelectToolbarSection.js.map +1 -0
  86. package/dist/field/features/format/inlinecode/feature.client.js +1 -1
  87. package/dist/field/features/format/inlinecode/feature.client.js.map +1 -0
  88. package/dist/field/features/format/inlinecode/feature.server.js +1 -1
  89. package/dist/field/features/format/inlinecode/feature.server.js.map +1 -0
  90. package/dist/field/features/format/inlinecode/markdownTransformers.js +1 -1
  91. package/dist/field/features/format/inlinecode/markdownTransformers.js.map +1 -0
  92. package/dist/field/features/format/italic/feature.client.js +1 -1
  93. package/dist/field/features/format/italic/feature.client.js.map +1 -0
  94. package/dist/field/features/format/italic/feature.server.js +1 -1
  95. package/dist/field/features/format/italic/feature.server.js.map +1 -0
  96. package/dist/field/features/format/italic/markdownTransformers.js +1 -1
  97. package/dist/field/features/format/italic/markdownTransformers.js.map +1 -0
  98. package/dist/field/features/format/strikethrough/feature.client.js +1 -1
  99. package/dist/field/features/format/strikethrough/feature.client.js.map +1 -0
  100. package/dist/field/features/format/strikethrough/feature.server.js +1 -1
  101. package/dist/field/features/format/strikethrough/feature.server.js.map +1 -0
  102. package/dist/field/features/format/strikethrough/markdownTransformers.js +1 -1
  103. package/dist/field/features/format/strikethrough/markdownTransformers.js.map +1 -0
  104. package/dist/field/features/format/subscript/feature.client.js +1 -1
  105. package/dist/field/features/format/subscript/feature.client.js.map +1 -0
  106. package/dist/field/features/format/subscript/feature.server.js +1 -1
  107. package/dist/field/features/format/subscript/feature.server.js.map +1 -0
  108. package/dist/field/features/format/superscript/feature.client.js +1 -1
  109. package/dist/field/features/format/superscript/feature.client.js.map +1 -0
  110. package/dist/field/features/format/superscript/feature.server.js +1 -1
  111. package/dist/field/features/format/superscript/feature.server.js.map +1 -0
  112. package/dist/field/features/format/underline/feature.client.js +1 -1
  113. package/dist/field/features/format/underline/feature.client.js.map +1 -0
  114. package/dist/field/features/format/underline/feature.server.js +1 -1
  115. package/dist/field/features/format/underline/feature.server.js.map +1 -0
  116. package/dist/field/features/heading/feature.client.js +1 -1
  117. package/dist/field/features/heading/feature.client.js.map +1 -0
  118. package/dist/field/features/heading/feature.server.js +1 -1
  119. package/dist/field/features/heading/feature.server.js.map +1 -0
  120. package/dist/field/features/heading/markdownTransformer.js +1 -1
  121. package/dist/field/features/heading/markdownTransformer.js.map +1 -0
  122. package/dist/field/features/indent/feature.client.js +1 -1
  123. package/dist/field/features/indent/feature.client.js.map +1 -0
  124. package/dist/field/features/indent/feature.server.js +1 -1
  125. package/dist/field/features/indent/feature.server.js.map +1 -0
  126. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +1 -1
  127. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js.map +1 -0
  128. package/dist/field/features/link/drawer/baseFields.js +1 -1
  129. package/dist/field/features/link/drawer/baseFields.js.map +1 -0
  130. package/dist/field/features/link/drawer/index.js +1 -1
  131. package/dist/field/features/link/drawer/index.js.map +1 -0
  132. package/dist/field/features/link/drawer/types.js +1 -1
  133. package/dist/field/features/link/drawer/types.js.map +1 -0
  134. package/dist/field/features/link/feature.client.js +1 -1
  135. package/dist/field/features/link/feature.client.js.map +1 -0
  136. package/dist/field/features/link/feature.server.js +1 -1
  137. package/dist/field/features/link/feature.server.js.map +1 -0
  138. package/dist/field/features/link/nodes/AutoLinkNode.js +1 -1
  139. package/dist/field/features/link/nodes/AutoLinkNode.js.map +1 -0
  140. package/dist/field/features/link/nodes/LinkNode.js +1 -1
  141. package/dist/field/features/link/nodes/LinkNode.js.map +1 -0
  142. package/dist/field/features/link/nodes/types.js +1 -1
  143. package/dist/field/features/link/nodes/types.js.map +1 -0
  144. package/dist/field/features/link/plugins/autoLink/index.js +1 -1
  145. package/dist/field/features/link/plugins/autoLink/index.js.map +1 -0
  146. package/dist/field/features/link/plugins/clickableLink/index.js +1 -1
  147. package/dist/field/features/link/plugins/clickableLink/index.js.map +1 -0
  148. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -1
  149. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -0
  150. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +1 -1
  151. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -0
  152. package/dist/field/features/link/plugins/floatingLinkEditor/index.js +1 -1
  153. package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -0
  154. package/dist/field/features/link/plugins/floatingLinkEditor/types.js +1 -1
  155. package/dist/field/features/link/plugins/floatingLinkEditor/types.js.map +1 -0
  156. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +1 -1
  157. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -0
  158. package/dist/field/features/link/plugins/link/index.js +1 -1
  159. package/dist/field/features/link/plugins/link/index.js.map +1 -0
  160. package/dist/field/features/link/populationPromise.js +1 -1
  161. package/dist/field/features/link/populationPromise.js.map +1 -0
  162. package/dist/field/features/lists/checklist/feature.client.js +1 -1
  163. package/dist/field/features/lists/checklist/feature.client.js.map +1 -0
  164. package/dist/field/features/lists/checklist/feature.server.js +1 -1
  165. package/dist/field/features/lists/checklist/feature.server.js.map +1 -0
  166. package/dist/field/features/lists/checklist/markdownTransformers.js +1 -1
  167. package/dist/field/features/lists/checklist/markdownTransformers.js.map +1 -0
  168. package/dist/field/features/lists/checklist/plugin/index.js +1 -1
  169. package/dist/field/features/lists/checklist/plugin/index.js.map +1 -0
  170. package/dist/field/features/lists/common/markdown.js +1 -1
  171. package/dist/field/features/lists/common/markdown.js.map +1 -0
  172. package/dist/field/features/lists/htmlConverter.js +1 -1
  173. package/dist/field/features/lists/htmlConverter.js.map +1 -0
  174. package/dist/field/features/lists/orderedlist/feature.client.js +1 -1
  175. package/dist/field/features/lists/orderedlist/feature.client.js.map +1 -0
  176. package/dist/field/features/lists/orderedlist/feature.server.js +1 -1
  177. package/dist/field/features/lists/orderedlist/feature.server.js.map +1 -0
  178. package/dist/field/features/lists/orderedlist/markdownTransformer.js +1 -1
  179. package/dist/field/features/lists/orderedlist/markdownTransformer.js.map +1 -0
  180. package/dist/field/features/lists/plugin/index.js +1 -1
  181. package/dist/field/features/lists/plugin/index.js.map +1 -0
  182. package/dist/field/features/lists/unorderedlist/feature.client.js +1 -1
  183. package/dist/field/features/lists/unorderedlist/feature.client.js.map +1 -0
  184. package/dist/field/features/lists/unorderedlist/feature.server.js +1 -1
  185. package/dist/field/features/lists/unorderedlist/feature.server.js.map +1 -0
  186. package/dist/field/features/lists/unorderedlist/markdownTransformer.js +1 -1
  187. package/dist/field/features/lists/unorderedlist/markdownTransformer.js.map +1 -0
  188. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +1 -1
  189. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js.map +1 -0
  190. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +1 -1
  191. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -0
  192. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +1 -1
  193. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js.map +1 -0
  194. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +1 -1
  195. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js.map +1 -0
  196. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +1 -1
  197. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -0
  198. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +1 -1
  199. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js.map +1 -0
  200. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +1 -1
  201. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js.map +1 -0
  202. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +1 -1
  203. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -0
  204. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +1 -1
  205. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js.map +1 -0
  206. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +1 -1
  207. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js.map +1 -0
  208. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +1 -1
  209. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -0
  210. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +1 -1
  211. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js.map +1 -0
  212. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +1 -1
  213. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js.map +1 -0
  214. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +1 -1
  215. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -0
  216. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +1 -1
  217. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js.map +1 -0
  218. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +1 -1
  219. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js.map +1 -0
  220. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +1 -1
  221. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -0
  222. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +1 -1
  223. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js.map +1 -0
  224. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +1 -1
  225. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js.map +1 -0
  226. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +1 -1
  227. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -0
  228. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +1 -1
  229. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js.map +1 -0
  230. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +1 -1
  231. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -0
  232. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +1 -1
  233. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -0
  234. package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js +1 -1
  235. package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -0
  236. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +1 -1
  237. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -0
  238. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +1 -1
  239. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -0
  240. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +1 -1
  241. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -0
  242. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +1 -1
  243. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
  244. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +1 -1
  245. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -0
  246. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +1 -1
  247. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -0
  248. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +1 -1
  249. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -0
  250. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +1 -1
  251. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js.map +1 -0
  252. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +1 -1
  253. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -0
  254. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +1 -1
  255. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js.map +1 -0
  256. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +1 -1
  257. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js.map +1 -0
  258. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +1 -1
  259. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -0
  260. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +1 -1
  261. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js.map +1 -0
  262. package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +1 -1
  263. package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js.map +1 -0
  264. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +1 -1
  265. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -0
  266. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +1 -1
  267. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js.map +1 -0
  268. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +1 -1
  269. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js.map +1 -0
  270. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +1 -1
  271. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -0
  272. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +1 -1
  273. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js.map +1 -0
  274. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +1 -1
  275. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js.map +1 -0
  276. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +1 -1
  277. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -0
  278. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +1 -1
  279. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js.map +1 -0
  280. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +1 -1
  281. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js.map +1 -0
  282. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +1 -1
  283. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -0
  284. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +1 -1
  285. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js.map +1 -0
  286. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +1 -1
  287. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js.map +1 -0
  288. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +1 -1
  289. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -0
  290. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +1 -1
  291. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js.map +1 -0
  292. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +1 -1
  293. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js.map +1 -0
  294. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +1 -1
  295. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -0
  296. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +1 -1
  297. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js.map +1 -0
  298. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +1 -1
  299. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js.map +1 -0
  300. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +1 -1
  301. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -0
  302. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +1 -1
  303. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js.map +1 -0
  304. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +1 -1
  305. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -0
  306. package/dist/field/features/migrations/slateToLexical/converter/index.js +1 -1
  307. package/dist/field/features/migrations/slateToLexical/converter/index.js.map +1 -0
  308. package/dist/field/features/migrations/slateToLexical/converter/types.js +1 -1
  309. package/dist/field/features/migrations/slateToLexical/converter/types.js.map +1 -0
  310. package/dist/field/features/migrations/slateToLexical/feature.client.js +1 -1
  311. package/dist/field/features/migrations/slateToLexical/feature.client.js.map +1 -0
  312. package/dist/field/features/migrations/slateToLexical/feature.server.js +1 -1
  313. package/dist/field/features/migrations/slateToLexical/feature.server.js.map +1 -0
  314. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +1 -1
  315. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -0
  316. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +1 -1
  317. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
  318. package/dist/field/features/paragraph/feature.client.js +1 -1
  319. package/dist/field/features/paragraph/feature.client.js.map +1 -0
  320. package/dist/field/features/paragraph/feature.server.js +1 -1
  321. package/dist/field/features/paragraph/feature.server.js.map +1 -0
  322. package/dist/field/features/relationship/drawer/commands.js +1 -1
  323. package/dist/field/features/relationship/drawer/commands.js.map +1 -0
  324. package/dist/field/features/relationship/drawer/index.js +1 -1
  325. package/dist/field/features/relationship/drawer/index.js.map +1 -0
  326. package/dist/field/features/relationship/feature.client.js +1 -1
  327. package/dist/field/features/relationship/feature.client.js.map +1 -0
  328. package/dist/field/features/relationship/feature.server.js +1 -1
  329. package/dist/field/features/relationship/feature.server.js.map +1 -0
  330. package/dist/field/features/relationship/nodes/RelationshipNode.js +1 -1
  331. package/dist/field/features/relationship/nodes/RelationshipNode.js.map +1 -0
  332. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +1 -1
  333. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -0
  334. package/dist/field/features/relationship/plugins/index.js +1 -1
  335. package/dist/field/features/relationship/plugins/index.js.map +1 -0
  336. package/dist/field/features/relationship/populationPromise.js +1 -1
  337. package/dist/field/features/relationship/populationPromise.js.map +1 -0
  338. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +1 -1
  339. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js.map +1 -0
  340. package/dist/field/features/types.js +1 -1
  341. package/dist/field/features/types.js.map +1 -0
  342. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +1 -1
  343. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -0
  344. package/dist/field/features/upload/component/index.js +1 -1
  345. package/dist/field/features/upload/component/index.js.map +1 -0
  346. package/dist/field/features/upload/drawer/commands.js +1 -1
  347. package/dist/field/features/upload/drawer/commands.js.map +1 -0
  348. package/dist/field/features/upload/drawer/index.js +1 -1
  349. package/dist/field/features/upload/drawer/index.js.map +1 -0
  350. package/dist/field/features/upload/feature.client.js +1 -1
  351. package/dist/field/features/upload/feature.client.js.map +1 -0
  352. package/dist/field/features/upload/feature.server.js +1 -1
  353. package/dist/field/features/upload/feature.server.js.map +1 -0
  354. package/dist/field/features/upload/nodes/UploadNode.js +1 -1
  355. package/dist/field/features/upload/nodes/UploadNode.js.map +1 -0
  356. package/dist/field/features/upload/plugin/index.js +1 -1
  357. package/dist/field/features/upload/plugin/index.js.map +1 -0
  358. package/dist/field/features/upload/populationPromise.js +1 -1
  359. package/dist/field/features/upload/populationPromise.js.map +1 -0
  360. package/dist/field/features/upload/validate.js +1 -1
  361. package/dist/field/features/upload/validate.js.map +1 -0
  362. package/dist/field/index.js +1 -1
  363. package/dist/field/index.js.map +1 -0
  364. package/dist/field/lexical/EditorPlugin.js +1 -1
  365. package/dist/field/lexical/EditorPlugin.js.map +1 -0
  366. package/dist/field/lexical/LexicalEditor.js +1 -1
  367. package/dist/field/lexical/LexicalEditor.js.map +1 -0
  368. package/dist/field/lexical/LexicalProvider.js +1 -1
  369. package/dist/field/lexical/LexicalProvider.js.map +1 -0
  370. package/dist/field/lexical/config/client/EditorConfigProvider.js +1 -1
  371. package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -0
  372. package/dist/field/lexical/config/client/default.js +1 -1
  373. package/dist/field/lexical/config/client/default.js.map +1 -0
  374. package/dist/field/lexical/config/client/loader.js +1 -1
  375. package/dist/field/lexical/config/client/loader.js.map +1 -0
  376. package/dist/field/lexical/config/client/sanitize.js +1 -1
  377. package/dist/field/lexical/config/client/sanitize.js.map +1 -0
  378. package/dist/field/lexical/config/server/default.js +1 -1
  379. package/dist/field/lexical/config/server/default.js.map +1 -0
  380. package/dist/field/lexical/config/server/loader.js +1 -1
  381. package/dist/field/lexical/config/server/loader.js.map +1 -0
  382. package/dist/field/lexical/config/server/sanitize.js +1 -1
  383. package/dist/field/lexical/config/server/sanitize.js.map +1 -0
  384. package/dist/field/lexical/config/types.js +1 -1
  385. package/dist/field/lexical/config/types.js.map +1 -0
  386. package/dist/field/lexical/nodes/index.js +1 -1
  387. package/dist/field/lexical/nodes/index.js.map +1 -0
  388. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +1 -1
  389. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js.map +1 -0
  390. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +1 -1
  391. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js.map +1 -0
  392. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +1 -1
  393. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js.map +1 -0
  394. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +1 -1
  395. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js.map +1 -0
  396. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +1 -1
  397. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js.map +1 -0
  398. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +1 -1
  399. package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +1 -0
  400. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +1 -1
  401. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -0
  402. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +1 -1
  403. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -0
  404. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -1
  405. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -0
  406. package/dist/field/lexical/plugins/SlashMenu/index.js +1 -1
  407. package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -0
  408. package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +1 -1
  409. package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -0
  410. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +1 -1
  411. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -0
  412. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +1 -1
  413. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -0
  414. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +1 -1
  415. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -0
  416. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +1 -1
  417. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +1 -0
  418. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +1 -1
  419. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -0
  420. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
  421. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -0
  422. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +1 -1
  423. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -0
  424. package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +1 -1
  425. package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -0
  426. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +1 -1
  427. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -0
  428. package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +1 -1
  429. package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -0
  430. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +1 -1
  431. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -0
  432. package/dist/field/lexical/theme/EditorTheme.js +1 -1
  433. package/dist/field/lexical/theme/EditorTheme.js.map +1 -0
  434. package/dist/field/lexical/ui/ContentEditable.js +1 -1
  435. package/dist/field/lexical/ui/ContentEditable.js.map +1 -0
  436. package/dist/field/lexical/ui/icons/AI/index.js +1 -1
  437. package/dist/field/lexical/ui/icons/AI/index.js.map +1 -0
  438. package/dist/field/lexical/ui/icons/AlignCenter/index.js +1 -1
  439. package/dist/field/lexical/ui/icons/AlignCenter/index.js.map +1 -0
  440. package/dist/field/lexical/ui/icons/AlignJustify/index.js +1 -1
  441. package/dist/field/lexical/ui/icons/AlignJustify/index.js.map +1 -0
  442. package/dist/field/lexical/ui/icons/AlignLeft/index.js +1 -1
  443. package/dist/field/lexical/ui/icons/AlignLeft/index.js.map +1 -0
  444. package/dist/field/lexical/ui/icons/AlignRight/index.js +1 -1
  445. package/dist/field/lexical/ui/icons/AlignRight/index.js.map +1 -0
  446. package/dist/field/lexical/ui/icons/Block/index.js +1 -1
  447. package/dist/field/lexical/ui/icons/Block/index.js.map +1 -0
  448. package/dist/field/lexical/ui/icons/Blockquote/index.js +1 -1
  449. package/dist/field/lexical/ui/icons/Blockquote/index.js.map +1 -0
  450. package/dist/field/lexical/ui/icons/Bold/index.js +1 -1
  451. package/dist/field/lexical/ui/icons/Bold/index.js.map +1 -0
  452. package/dist/field/lexical/ui/icons/Checklist/index.js +1 -1
  453. package/dist/field/lexical/ui/icons/Checklist/index.js.map +1 -0
  454. package/dist/field/lexical/ui/icons/Code/index.js +1 -1
  455. package/dist/field/lexical/ui/icons/Code/index.js.map +1 -0
  456. package/dist/field/lexical/ui/icons/CodeBlock/index.js +1 -1
  457. package/dist/field/lexical/ui/icons/CodeBlock/index.js.map +1 -0
  458. package/dist/field/lexical/ui/icons/H1/index.js +1 -1
  459. package/dist/field/lexical/ui/icons/H1/index.js.map +1 -0
  460. package/dist/field/lexical/ui/icons/H2/index.js +1 -1
  461. package/dist/field/lexical/ui/icons/H2/index.js.map +1 -0
  462. package/dist/field/lexical/ui/icons/H3/index.js +1 -1
  463. package/dist/field/lexical/ui/icons/H3/index.js.map +1 -0
  464. package/dist/field/lexical/ui/icons/H4/index.js +1 -1
  465. package/dist/field/lexical/ui/icons/H4/index.js.map +1 -0
  466. package/dist/field/lexical/ui/icons/H5/index.js +1 -1
  467. package/dist/field/lexical/ui/icons/H5/index.js.map +1 -0
  468. package/dist/field/lexical/ui/icons/H6/index.js +1 -1
  469. package/dist/field/lexical/ui/icons/H6/index.js.map +1 -0
  470. package/dist/field/lexical/ui/icons/IndentDecrease/index.js +1 -1
  471. package/dist/field/lexical/ui/icons/IndentDecrease/index.js.map +1 -0
  472. package/dist/field/lexical/ui/icons/IndentIncrease/index.js +1 -1
  473. package/dist/field/lexical/ui/icons/IndentIncrease/index.js.map +1 -0
  474. package/dist/field/lexical/ui/icons/Italic/index.js +1 -1
  475. package/dist/field/lexical/ui/icons/Italic/index.js.map +1 -0
  476. package/dist/field/lexical/ui/icons/Link/index.js +1 -1
  477. package/dist/field/lexical/ui/icons/Link/index.js.map +1 -0
  478. package/dist/field/lexical/ui/icons/OrderedList/index.js +1 -1
  479. package/dist/field/lexical/ui/icons/OrderedList/index.js.map +1 -0
  480. package/dist/field/lexical/ui/icons/Relationship/index.js +1 -1
  481. package/dist/field/lexical/ui/icons/Relationship/index.js.map +1 -0
  482. package/dist/field/lexical/ui/icons/Strikethrough/index.js +1 -1
  483. package/dist/field/lexical/ui/icons/Strikethrough/index.js.map +1 -0
  484. package/dist/field/lexical/ui/icons/Subscript/index.js +1 -1
  485. package/dist/field/lexical/ui/icons/Subscript/index.js.map +1 -0
  486. package/dist/field/lexical/ui/icons/Superscript/index.js +1 -1
  487. package/dist/field/lexical/ui/icons/Superscript/index.js.map +1 -0
  488. package/dist/field/lexical/ui/icons/Text/index.js +1 -1
  489. package/dist/field/lexical/ui/icons/Text/index.js.map +1 -0
  490. package/dist/field/lexical/ui/icons/Underline/index.js +1 -1
  491. package/dist/field/lexical/ui/icons/Underline/index.js.map +1 -0
  492. package/dist/field/lexical/ui/icons/UnorderedList/index.js +1 -1
  493. package/dist/field/lexical/ui/icons/UnorderedList/index.js.map +1 -0
  494. package/dist/field/lexical/ui/icons/Upload/index.js +1 -1
  495. package/dist/field/lexical/ui/icons/Upload/index.js.map +1 -0
  496. package/dist/field/lexical/utils/canUseDOM.js +1 -1
  497. package/dist/field/lexical/utils/canUseDOM.js.map +1 -0
  498. package/dist/field/lexical/utils/cloneDeep.js +1 -1
  499. package/dist/field/lexical/utils/cloneDeep.js.map +1 -0
  500. package/dist/field/lexical/utils/environment.js +1 -1
  501. package/dist/field/lexical/utils/environment.js.map +1 -0
  502. package/dist/field/lexical/utils/getDOMRangeRect.js +1 -1
  503. package/dist/field/lexical/utils/getDOMRangeRect.js.map +1 -0
  504. package/dist/field/lexical/utils/getSelectedNode.js +1 -1
  505. package/dist/field/lexical/utils/getSelectedNode.js.map +1 -0
  506. package/dist/field/lexical/utils/guard.js +1 -1
  507. package/dist/field/lexical/utils/guard.js.map +1 -0
  508. package/dist/field/lexical/utils/invariant.js +1 -1
  509. package/dist/field/lexical/utils/invariant.js.map +1 -0
  510. package/dist/field/lexical/utils/joinClasses.js +1 -1
  511. package/dist/field/lexical/utils/joinClasses.js.map +1 -0
  512. package/dist/field/lexical/utils/markdown/createBlockNode.js +1 -1
  513. package/dist/field/lexical/utils/markdown/createBlockNode.js.map +1 -0
  514. package/dist/field/lexical/utils/nodeFormat.js +1 -1
  515. package/dist/field/lexical/utils/nodeFormat.js.map +1 -0
  516. package/dist/field/lexical/utils/point.js +1 -1
  517. package/dist/field/lexical/utils/point.js.map +1 -0
  518. package/dist/field/lexical/utils/rect.js +1 -1
  519. package/dist/field/lexical/utils/rect.js.map +1 -0
  520. package/dist/field/lexical/utils/setFloatingElemPosition.js +1 -1
  521. package/dist/field/lexical/utils/setFloatingElemPosition.js.map +1 -0
  522. package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +1 -1
  523. package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -0
  524. package/dist/field/lexical/utils/swipe.js +1 -1
  525. package/dist/field/lexical/utils/swipe.js.map +1 -0
  526. package/dist/field/lexical/utils/url.js +1 -1
  527. package/dist/field/lexical/utils/url.js.map +1 -0
  528. package/dist/generateComponentMap.js +1 -1
  529. package/dist/generateComponentMap.js.map +1 -0
  530. package/dist/generateSchemaMap.js +1 -1
  531. package/dist/generateSchemaMap.js.map +1 -0
  532. package/dist/index.js +1 -1
  533. package/dist/index.js.map +1 -0
  534. package/dist/populate/defaultValue.js +1 -1
  535. package/dist/populate/defaultValue.js.map +1 -0
  536. package/dist/populate/populate.js +1 -1
  537. package/dist/populate/populate.js.map +1 -0
  538. package/dist/populate/recurseNestedFields.js +1 -1
  539. package/dist/populate/recurseNestedFields.js.map +1 -0
  540. package/dist/populate/richTextRelationshipPromise.js +1 -1
  541. package/dist/populate/richTextRelationshipPromise.js.map +1 -0
  542. package/dist/types.js +1 -1
  543. package/dist/types.js.map +1 -0
  544. package/dist/useLexicalFeature.js +1 -1
  545. package/dist/useLexicalFeature.js.map +1 -0
  546. package/dist/validate/index.js +1 -1
  547. package/dist/validate/index.js.map +1 -0
  548. package/dist/validate/validateNodes.js +1 -1
  549. package/dist/validate/validateNodes.js.map +1 -0
  550. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { MutableRefObject, ReactPortal } from 'react'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst {\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} = lexicalImport\n\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroup, SlashMenuOption } 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: MutableRefObject<HTMLElement | null>,\n itemProps: {\n groupsWithOptions: Array<SlashMenuGroup>\n selectOptionAndCleanUp: (selectedOption: SlashMenuOption) => void\n selectedOptionKey: null | string\n setSelectedOptionKey: (optionKey: 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) return\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): number {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substr(-i) === entryText.substr(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 // eslint-disable-next-line react/destructuring-assignment\n const characterOffset = match.replaceableString.length\n // eslint-disable-next-line react/destructuring-assignment\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 option: SlashMenuOption\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groupsWithOptions filtering is already handled in SlashMenu/index.tsx. Thus, groupsWithOptions always contains the matching options.\n groupsWithOptions,\n menuRenderFn,\n onSelectOption,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: MutableRefObject<HTMLElement>\n close: () => void\n editor: LexicalEditor\n groupsWithOptions: Array<SlashMenuGroup>\n menuRenderFn: MenuRenderFn\n onSelectOption: (\n option: SlashMenuOption,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedOptionKey, setSelectedOptionKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedOption = useCallback(\n (option: SlashMenuOption) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${option.key}`)\n setSelectedOptionKey(option.key)\n }\n },\n [editor],\n )\n\n const setSelectedOptionKeyToFirstMatchingOption = useCallback(() => {\n // set selected option to the first of the matching ones\n if (groupsWithOptions !== null && matchingString != null) {\n // groupsWithOptions filtering is already handled in SlashMenu/index.tsx. Thus, groupsWithOptions always contains the matching options.\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n\n if (allOptions.length) {\n const firstMatchingOption = allOptions[0]\n updateSelectedOption(firstMatchingOption)\n }\n }\n }, [groupsWithOptions, updateSelectedOption, matchingString])\n\n useEffect(() => {\n setSelectedOptionKeyToFirstMatchingOption()\n }, [matchingString, setSelectedOptionKeyToFirstMatchingOption])\n\n const selectOptionAndCleanUp = useCallback(\n (selectedOption: SlashMenuOption) => {\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n onSelectOption(\n selectedOption,\n textNodeContainingQuery,\n close,\n resolution.match ? resolution.match.matchingString : '',\n )\n })\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectOption, 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 (groupsWithOptions === null) {\n setSelectedOptionKey(null)\n } else if (selectedOptionKey === null) {\n setSelectedOptionKeyToFirstMatchingOption()\n }\n }, [\n groupsWithOptions,\n selectedOptionKey,\n updateSelectedOption,\n setSelectedOptionKeyToFirstMatchingOption,\n ])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ option }) => {\n if (option.ref && option.ref.current != null) {\n scrollIntoViewIfNeeded(option.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedOption])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (\n groupsWithOptions !== null &&\n groupsWithOptions.length &&\n selectedOptionKey !== null\n ) {\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedIndex = allOptions.findIndex((option) => option.key === selectedOptionKey)\n\n const newSelectedIndex = selectedIndex !== allOptions.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedOption = allOptions[newSelectedIndex]\n\n updateSelectedOption(newSelectedOption)\n if (newSelectedOption.ref != null && newSelectedOption.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n option: newSelectedOption,\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 (\n groupsWithOptions !== null &&\n groupsWithOptions.length &&\n selectedOptionKey !== null\n ) {\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedIndex = allOptions.findIndex((option) => option.key === selectedOptionKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allOptions.length - 1\n\n const newSelectedOption = allOptions[newSelectedIndex]\n\n updateSelectedOption(newSelectedOption)\n if (newSelectedOption.ref != null && newSelectedOption.ref.current) {\n scrollIntoViewIfNeeded(newSelectedOption.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 (groupsWithOptions === null || selectedOptionKey === null) {\n return false\n }\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedOption = allOptions.find((option) => option.key === selectedOptionKey)\n if (!selectedOption) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectOptionAndCleanUp(selectedOption)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groupsWithOptions === null || selectedOptionKey === null) {\n return false\n }\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedOption = allOptions.find((option) => option.key === selectedOptionKey)\n if (!selectedOption) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectOptionAndCleanUp(selectedOption)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [\n selectOptionAndCleanUp,\n close,\n editor,\n groupsWithOptions,\n selectedOptionKey,\n updateSelectedOption,\n ])\n\n const listItemProps = useMemo(\n () => ({\n groupsWithOptions,\n selectOptionAndCleanUp,\n selectedOptionKey,\n setSelectedOptionKey,\n }),\n [selectOptionAndCleanUp, selectedOptionKey, groupsWithOptions],\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): MutableRefObject<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 as const\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"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$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","substr","$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","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","groupsWithOptions","menuRenderFn","onSelectOption","shouldSplitNodeWithQuery","selectedOptionKey","setSelectedOptionKey","updateSelectedOption","option","rootElem","setAttribute","key","setSelectedOptionKeyToFirstMatchingOption","allOptions","flatMap","group","options","firstMatchingOption","selectOptionAndCleanUp","selectedOption","update","textNodeContainingQuery","removeAttribute","registerCommand","ref","current","payload","event","selectedIndex","findIndex","newSelectedIndex","newSelectedOption","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"],"mappings":"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"}
@@ -204,4 +204,4 @@ export function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem, groups
204
204
  });
205
205
  }
206
206
 
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHtcbiAgTGV4aWNhbENvbW1hbmQsXG4gIExleGljYWxFZGl0b3IsXG4gIFBhcmFncmFwaE5vZGUsXG4gIFJhbmdlU2VsZWN0aW9uLFxuICBUZXh0Tm9kZSxcbn0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IGxleGljYWxDb21wb3NlckNvbnRleHRJbXBvcnQgZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dC5qcydcbmNvbnN0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9ID0gbGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydFxuXG5pbXBvcnQgbGV4aWNhbFV0aWxzSW1wb3J0IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuY29uc3QgeyBtZXJnZVJlZ2lzdGVyIH0gPSBsZXhpY2FsVXRpbHNJbXBvcnRcblxuaW1wb3J0IGxleGljYWxJbXBvcnQgZnJvbSAnbGV4aWNhbCdcbmNvbnN0IHsgJGdldFNlbGVjdGlvbiwgJGlzUmFuZ2VTZWxlY3Rpb24sICRpc1RleHROb2RlLCBDT01NQU5EX1BSSU9SSVRZX0xPVywgY3JlYXRlQ29tbWFuZCB9ID1cbiAgbGV4aWNhbEltcG9ydFxuXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgTWVudVRleHRNYXRjaCwgVHJpZ2dlckZuIH0gZnJvbSAnLi4vdXNlTWVudVRyaWdnZXJNYXRjaC5qcydcbmltcG9ydCB0eXBlIHsgTWVudVJlbmRlckZuLCBNZW51UmVzb2x1dGlvbiB9IGZyb20gJy4vTGV4aWNhbE1lbnUuanMnXG5pbXBvcnQgdHlwZSB7IFNsYXNoTWVudUdyb3VwLCBTbGFzaE1lbnVPcHRpb24gfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5pbXBvcnQgeyBMZXhpY2FsTWVudSwgdXNlTWVudUFuY2hvclJlZiB9IGZyb20gJy4vTGV4aWNhbE1lbnUuanMnXG5cbmV4cG9ydCBjb25zdCBQVU5DVFVBVElPTiA9ICdcXFxcLixcXFxcK1xcXFwqXFxcXD9cXFxcJFxcXFxAXFxcXHwje31cXFxcKFxcXFwpXFxcXF5cXFxcLVxcXFxbXFxcXF1cXFxcXFxcXC8hJVxcJ1wifj08Pl86OydcblxuZnVuY3Rpb24gZ2V0VGV4dFVwVG9BbmNob3Ioc2VsZWN0aW9uOiBSYW5nZVNlbGVjdGlvbik6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBhbmNob3IgPSBzZWxlY3Rpb24uYW5jaG9yXG4gIGlmIChhbmNob3IudHlwZSAhPT0gJ3RleHQnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBhbmNob3JOb2RlID0gYW5jaG9yLmdldE5vZGUoKVxuICBpZiAoIWFuY2hvck5vZGUuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGFuY2hvck9mZnNldCA9IGFuY2hvci5vZmZzZXRcbiAgcmV0dXJuIGFuY2hvck5vZGUuZ2V0VGV4dENvbnRlbnQoKS5zbGljZSgwLCBhbmNob3JPZmZzZXQpXG59XG5cbmZ1bmN0aW9uIHRyeVRvUG9zaXRpb25SYW5nZShsZWFkT2Zmc2V0OiBudW1iZXIsIHJhbmdlOiBSYW5nZSwgZWRpdG9yV2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgY29uc3QgZG9tU2VsZWN0aW9uID0gZWRpdG9yV2luZG93LmdldFNlbGVjdGlvbigpXG4gIGlmIChkb21TZWxlY3Rpb24gPT09IG51bGwgfHwgIWRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IGFuY2hvck5vZGUgPSBkb21TZWxlY3Rpb24uYW5jaG9yTm9kZVxuICBjb25zdCBzdGFydE9mZnNldCA9IGxlYWRPZmZzZXRcbiAgY29uc3QgZW5kT2Zmc2V0ID0gZG9tU2VsZWN0aW9uLmFuY2hvck9mZnNldFxuXG4gIGlmIChhbmNob3JOb2RlID09IG51bGwgfHwgZW5kT2Zmc2V0ID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgc3RhcnRPZmZzZXQpXG4gICAgLy8gaWYgZW5kT2Zmc2V0IGlzIDAsIHBvc2l0aW9uaW5nIHRoZSByYW5nZSBmb3Igd2hlbiB5b3UgY2xpY2sgdGhlIHBsdXMgYnV0dG9uIHRvIG9wZW4gdGhlIHNsYXNoIG1lbnUgd2lsbCBmaWFsXG4gICAgcmFuZ2Uuc2V0RW5kKGFuY2hvck5vZGUsIGVuZE9mZnNldCA+IDEgPyBlbmRPZmZzZXQgOiAxKVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2V0UXVlcnlUZXh0Rm9yU2VhcmNoKGVkaXRvcjogTGV4aWNhbEVkaXRvcik6IG51bGwgfCBzdHJpbmcge1xuICBsZXQgdGV4dCA9IG51bGxcbiAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGV4dCA9IGdldFRleHRVcFRvQW5jaG9yKHNlbGVjdGlvbilcbiAgfSlcbiAgcmV0dXJuIHRleHRcbn1cblxuZnVuY3Rpb24gaXNTZWxlY3Rpb25PbkVudGl0eUJvdW5kYXJ5KGVkaXRvcjogTGV4aWNhbEVkaXRvciwgb2Zmc2V0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgaWYgKG9mZnNldCAhPT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICBpZiAoJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICAgICAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgICAgIGNvbnN0IHByZXZTaWJsaW5nID0gYW5jaG9yTm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICAgICAgcmV0dXJuICRpc1RleHROb2RlKHByZXZTaWJsaW5nKSAmJiBwcmV2U2libGluZy5pc1RleHRFbnRpdHkoKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfSlcbn1cblxuZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIGlmIChSZWFjdC5zdGFydFRyYW5zaXRpb24pIHtcbiAgICBSZWFjdC5zdGFydFRyYW5zaXRpb24oY2FsbGJhY2spXG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2soKVxuICB9XG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZXhwb3J0IHsgdXNlRHluYW1pY1Bvc2l0aW9uaW5nIH0gZnJvbSAnLi9MZXhpY2FsTWVudS5qcydcblxuZXhwb3J0IHR5cGUgVHlwZWFoZWFkTWVudVBsdWdpblByb3BzID0ge1xuICBhbmNob3JDbGFzc05hbWU/OiBzdHJpbmdcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZ3JvdXBzV2l0aE9wdGlvbnM6IEFycmF5PFNsYXNoTWVudUdyb3VwPlxuICBtZW51UmVuZGVyRm46IE1lbnVSZW5kZXJGblxuICBvbkNsb3NlPzogKCkgPT4gdm9pZFxuICBvbk9wZW4/OiAocmVzb2x1dGlvbjogTWVudVJlc29sdXRpb24pID0+IHZvaWRcbiAgb25RdWVyeUNoYW5nZTogKG1hdGNoaW5nU3RyaW5nOiBudWxsIHwgc3RyaW5nKSA9PiB2b2lkXG4gIG9uU2VsZWN0T3B0aW9uOiAoXG4gICAgb3B0aW9uOiBTbGFzaE1lbnVPcHRpb24sXG4gICAgdGV4dE5vZGVDb250YWluaW5nUXVlcnk6IFRleHROb2RlIHwgbnVsbCxcbiAgICBjbG9zZU1lbnU6ICgpID0+IHZvaWQsXG4gICAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZyxcbiAgKSA9PiB2b2lkXG4gIHRyaWdnZXJGbjogVHJpZ2dlckZuXG59XG5cbmV4cG9ydCBjb25zdCBFTkFCTEVfU0xBU0hfTUVOVV9DT01NQU5EOiBMZXhpY2FsQ29tbWFuZDx7XG4gIG5vZGU6IFBhcmFncmFwaE5vZGVcbn0+ID0gY3JlYXRlQ29tbWFuZCgnRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCcpXG5cbmV4cG9ydCBmdW5jdGlvbiBMZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbih7XG4gIGFuY2hvckNsYXNzTmFtZSxcbiAgYW5jaG9yRWxlbSxcbiAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gIG1lbnVSZW5kZXJGbixcbiAgb25DbG9zZSxcbiAgb25PcGVuLFxuICBvblF1ZXJ5Q2hhbmdlLFxuICBvblNlbGVjdE9wdGlvbixcbiAgdHJpZ2dlckZuLFxufTogVHlwZWFoZWFkTWVudVBsdWdpblByb3BzKTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgW3Jlc29sdXRpb24sIHNldFJlc29sdXRpb25dID0gdXNlU3RhdGU8TWVudVJlc29sdXRpb24gfCBudWxsPihudWxsKVxuICBjb25zdCBhbmNob3JFbGVtZW50UmVmID0gdXNlTWVudUFuY2hvclJlZihhbmNob3JFbGVtLCByZXNvbHV0aW9uLCBzZXRSZXNvbHV0aW9uLCBhbmNob3JDbGFzc05hbWUpXG5cbiAgY29uc3QgY2xvc2VUeXBlYWhlYWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UmVzb2x1dGlvbihudWxsKVxuICAgIGlmIChvbkNsb3NlICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgb25DbG9zZSgpXG4gICAgfVxuICB9LCBbb25DbG9zZSwgcmVzb2x1dGlvbl0pXG5cbiAgY29uc3Qgb3BlblR5cGVhaGVhZCA9IHVzZUNhbGxiYWNrKFxuICAgIChyZXM6IE1lbnVSZXNvbHV0aW9uKSA9PiB7XG4gICAgICBzZXRSZXNvbHV0aW9uKHJlcylcbiAgICAgIGlmIChvbk9wZW4gIT0gbnVsbCAmJiByZXNvbHV0aW9uID09PSBudWxsKSB7XG4gICAgICAgIG9uT3BlbihyZXMpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25PcGVuLCByZXNvbHV0aW9uXSxcbiAgKVxuXG4gIC8vIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIHRoZSBBZGRCbG9ja0hhbmRsZVBsdWdpbiwgc28gdGhhdCB0aGUgc2xhc2ggbWVudSBjYW4gYmUgb3BlbmVkIGZyb20gdGhlcmVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQoXG4gICAgICAgIEVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQsXG4gICAgICAgICh7IG5vZGUgfSkgPT4ge1xuICAgICAgICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2g6IE1lbnVUZXh0TWF0Y2ggPSB7XG4gICAgICAgICAgICAgIGxlYWRPZmZzZXQ6IDAsXG4gICAgICAgICAgICAgIG1hdGNoaW5nU3RyaW5nOiAnJyxcbiAgICAgICAgICAgICAgcmVwbGFjZWFibGVTdHJpbmc6ICcnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoICE9PSBudWxsICYmICFpc1NlbGVjdGlvbk9uRW50aXR5Qm91bmRhcnkoZWRpdG9yLCBtYXRjaC5sZWFkT2Zmc2V0KSkge1xuICAgICAgICAgICAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkaXRvcldpbmRvdyA9IGVkaXRvci5fd2luZG93ID8/IHdpbmRvd1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gZWRpdG9yV2luZG93LmRvY3VtZW50LmNyZWF0ZVJhbmdlKClcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFuZ2VQb3NpdGlvbmVkID0gdHJ5VG9Qb3NpdGlvblJhbmdlKG1hdGNoLmxlYWRPZmZzZXQsIHJhbmdlLCBlZGl0b3JXaW5kb3cpXG4gICAgICAgICAgICAgICAgaWYgKGlzUmFuZ2VQb3NpdGlvbmVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgb3BlblR5cGVhaGVhZCh7XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0UmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgb3BlblR5cGVhaGVhZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB1cGRhdGVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlZGl0b3JXaW5kb3cgPSBlZGl0b3IuX3dpbmRvdyA/PyB3aW5kb3dcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBlZGl0b3JXaW5kb3cuZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgICAgY29uc3QgdGV4dCA9IGdldFF1ZXJ5VGV4dEZvclNlYXJjaChlZGl0b3IpXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8XG4gICAgICAgICAgIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpIHx8XG4gICAgICAgICAgdGV4dCA9PT0gbnVsbCB8fFxuICAgICAgICAgIHJhbmdlID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIGNsb3NlVHlwZWFoZWFkKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdGNoID0gdHJpZ2dlckZuKHsgZWRpdG9yLCBxdWVyeTogdGV4dCB9KVxuICAgICAgICBvblF1ZXJ5Q2hhbmdlKG1hdGNoID8gbWF0Y2gubWF0Y2hpbmdTdHJpbmcgOiBudWxsKVxuXG4gICAgICAgIGlmIChtYXRjaCAhPT0gbnVsbCAmJiAhaXNTZWxlY3Rpb25PbkVudGl0eUJvdW5kYXJ5KGVkaXRvciwgbWF0Y2gubGVhZE9mZnNldCkpIHtcbiAgICAgICAgICBjb25zdCBpc1JhbmdlUG9zaXRpb25lZCA9IHRyeVRvUG9zaXRpb25SYW5nZShtYXRjaC5sZWFkT2Zmc2V0LCByYW5nZSwgZWRpdG9yV2luZG93KVxuICAgICAgICAgIGlmIChpc1JhbmdlUG9zaXRpb25lZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+XG4gICAgICAgICAgICAgIG9wZW5UeXBlYWhlYWQoe1xuICAgICAgICAgICAgICAgIGdldFJlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNsb3NlVHlwZWFoZWFkKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcmVtb3ZlVXBkYXRlTGlzdGVuZXIgPSBlZGl0b3IucmVnaXN0ZXJVcGRhdGVMaXN0ZW5lcih1cGRhdGVMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByZW1vdmVVcGRhdGVMaXN0ZW5lcigpXG4gICAgfVxuICB9LCBbZWRpdG9yLCB0cmlnZ2VyRm4sIG9uUXVlcnlDaGFuZ2UsIHJlc29sdXRpb24sIGNsb3NlVHlwZWFoZWFkLCBvcGVuVHlwZWFoZWFkXSlcblxuICByZXR1cm4gcmVzb2x1dGlvbiA9PT0gbnVsbCB8fCBlZGl0b3IgPT09IG51bGwgPyBudWxsIDogKFxuICAgIDxMZXhpY2FsTWVudVxuICAgICAgYW5jaG9yRWxlbWVudFJlZj17YW5jaG9yRWxlbWVudFJlZn1cbiAgICAgIGNsb3NlPXtjbG9zZVR5cGVhaGVhZH1cbiAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnM9e2dyb3Vwc1dpdGhPcHRpb25zfVxuICAgICAgbWVudVJlbmRlckZuPXttZW51UmVuZGVyRm59XG4gICAgICBvblNlbGVjdE9wdGlvbj17b25TZWxlY3RPcHRpb259XG4gICAgICByZXNvbHV0aW9uPXtyZXNvbHV0aW9ufVxuICAgICAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5XG4gICAgLz5cbiAgKVxufVxuXG5leHBvcnQgdHlwZSB7IE1lbnVSZW5kZXJGbiwgTWVudVJlc29sdXRpb24sIE1lbnVUZXh0TWF0Y2gsIFRyaWdnZXJGbiB9XG4iXSwibmFtZXMiOlsibGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydCIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiLCJsZXhpY2FsVXRpbHNJbXBvcnQiLCJtZXJnZVJlZ2lzdGVyIiwibGV4aWNhbEltcG9ydCIsIiRnZXRTZWxlY3Rpb24iLCIkaXNSYW5nZVNlbGVjdGlvbiIsIiRpc1RleHROb2RlIiwiQ09NTUFORF9QUklPUklUWV9MT1ciLCJjcmVhdGVDb21tYW5kIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiTGV4aWNhbE1lbnUiLCJ1c2VNZW51QW5jaG9yUmVmIiwiUFVOQ1RVQVRJT04iLCJnZXRUZXh0VXBUb0FuY2hvciIsInNlbGVjdGlvbiIsImFuY2hvciIsInR5cGUiLCJhbmNob3JOb2RlIiwiZ2V0Tm9kZSIsImlzU2ltcGxlVGV4dCIsImFuY2hvck9mZnNldCIsIm9mZnNldCIsImdldFRleHRDb250ZW50Iiwic2xpY2UiLCJ0cnlUb1Bvc2l0aW9uUmFuZ2UiLCJsZWFkT2Zmc2V0IiwicmFuZ2UiLCJlZGl0b3JXaW5kb3ciLCJkb21TZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJpc0NvbGxhcHNlZCIsInN0YXJ0T2Zmc2V0IiwiZW5kT2Zmc2V0Iiwic2V0U3RhcnQiLCJzZXRFbmQiLCJlcnJvciIsImdldFF1ZXJ5VGV4dEZvclNlYXJjaCIsImVkaXRvciIsInRleHQiLCJnZXRFZGl0b3JTdGF0ZSIsInJlYWQiLCJpc1NlbGVjdGlvbk9uRW50aXR5Qm91bmRhcnkiLCJwcmV2U2libGluZyIsImdldFByZXZpb3VzU2libGluZyIsImlzVGV4dEVudGl0eSIsInN0YXJ0VHJhbnNpdGlvbiIsImNhbGxiYWNrIiwiZ2V0U2Nyb2xsUGFyZW50IiwiZWxlbWVudCIsImluY2x1ZGVIaWRkZW4iLCJzdHlsZSIsImdldENvbXB1dGVkU3R5bGUiLCJleGNsdWRlU3RhdGljUGFyZW50IiwicG9zaXRpb24iLCJvdmVyZmxvd1JlZ2V4IiwiZG9jdW1lbnQiLCJib2R5IiwicGFyZW50IiwicGFyZW50RWxlbWVudCIsInRlc3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsInVzZUR5bmFtaWNQb3NpdGlvbmluZyIsIkVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQiLCJMZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbiIsImFuY2hvckNsYXNzTmFtZSIsImFuY2hvckVsZW0iLCJncm91cHNXaXRoT3B0aW9ucyIsIm1lbnVSZW5kZXJGbiIsIm9uQ2xvc2UiLCJvbk9wZW4iLCJvblF1ZXJ5Q2hhbmdlIiwib25TZWxlY3RPcHRpb24iLCJ0cmlnZ2VyRm4iLCJyZXNvbHV0aW9uIiwic2V0UmVzb2x1dGlvbiIsImFuY2hvckVsZW1lbnRSZWYiLCJjbG9zZVR5cGVhaGVhZCIsIm9wZW5UeXBlYWhlYWQiLCJyZXMiLCJyZWdpc3RlckNvbW1hbmQiLCJub2RlIiwibWF0Y2giLCJtYXRjaGluZ1N0cmluZyIsInJlcGxhY2VhYmxlU3RyaW5nIiwiX3dpbmRvdyIsIndpbmRvdyIsImNyZWF0ZVJhbmdlIiwiaXNSYW5nZVBvc2l0aW9uZWQiLCJnZXRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidXBkYXRlTGlzdGVuZXIiLCJxdWVyeSIsInJlbW92ZVVwZGF0ZUxpc3RlbmVyIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImNsb3NlIiwic2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQVNBLE9BQU9BLGtDQUFrQywyQ0FBMEM7QUFDbkYsTUFBTSxFQUFFQyx5QkFBeUIsRUFBRSxHQUFHRDtBQUV0QyxPQUFPRSx3QkFBd0IsaUJBQWdCO0FBQy9DLE1BQU0sRUFBRUMsYUFBYSxFQUFFLEdBQUdEO0FBRTFCLE9BQU9FLG1CQUFtQixVQUFTO0FBQ25DLE1BQU0sRUFBRUMsYUFBYSxFQUFFQyxpQkFBaUIsRUFBRUMsV0FBVyxFQUFFQyxvQkFBb0IsRUFBRUMsYUFBYSxFQUFFLEdBQzFGTDtBQUVGLFNBQVNNLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsUUFBTztBQUN4RCxZQUFZQyxXQUFXLFFBQU87QUFNOUIsU0FBU0MsV0FBVyxFQUFFQyxnQkFBZ0IsUUFBUSxtQkFBa0I7QUFFaEUsT0FBTyxNQUFNQyxjQUFjLCtEQUE4RDtBQUV6RixTQUFTQyxrQkFBa0JDLFNBQXlCO0lBQ2xELE1BQU1DLFNBQVNELFVBQVVDLE1BQU07SUFDL0IsSUFBSUEsT0FBT0MsSUFBSSxLQUFLLFFBQVE7UUFDMUIsT0FBTztJQUNUO0lBQ0EsTUFBTUMsYUFBYUYsT0FBT0csT0FBTztJQUNqQyxJQUFJLENBQUNELFdBQVdFLFlBQVksSUFBSTtRQUM5QixPQUFPO0lBQ1Q7SUFDQSxNQUFNQyxlQUFlTCxPQUFPTSxNQUFNO0lBQ2xDLE9BQU9KLFdBQVdLLGNBQWMsR0FBR0MsS0FBSyxDQUFDLEdBQUdIO0FBQzlDO0FBRUEsU0FBU0ksbUJBQW1CQyxVQUFrQixFQUFFQyxLQUFZLEVBQUVDLFlBQW9CO0lBQ2hGLE1BQU1DLGVBQWVELGFBQWFFLFlBQVk7SUFDOUMsSUFBSUQsaUJBQWlCLFFBQVEsQ0FBQ0EsYUFBYUUsV0FBVyxFQUFFO1FBQ3RELE9BQU87SUFDVDtJQUNBLE1BQU1iLGFBQWFXLGFBQWFYLFVBQVU7SUFDMUMsTUFBTWMsY0FBY047SUFDcEIsTUFBTU8sWUFBWUosYUFBYVIsWUFBWTtJQUUzQyxJQUFJSCxjQUFjLFFBQVFlLGFBQWEsTUFBTTtRQUMzQyxPQUFPO0lBQ1Q7SUFFQSxJQUFJO1FBQ0ZOLE1BQU1PLFFBQVEsQ0FBQ2hCLFlBQVljO1FBQzNCLCtHQUErRztRQUMvR0wsTUFBTVEsTUFBTSxDQUFDakIsWUFBWWUsWUFBWSxJQUFJQSxZQUFZO0lBQ3ZELEVBQUUsT0FBT0csT0FBTztRQUNkLE9BQU87SUFDVDtJQUVBLE9BQU87QUFDVDtBQUVBLFNBQVNDLHNCQUFzQkMsTUFBcUI7SUFDbEQsSUFBSUMsT0FBTztJQUNYRCxPQUFPRSxjQUFjLEdBQUdDLElBQUksQ0FBQztRQUMzQixNQUFNMUIsWUFBWWI7UUFDbEIsSUFBSSxDQUFDQyxrQkFBa0JZLFlBQVk7WUFDakM7UUFDRjtRQUNBd0IsT0FBT3pCLGtCQUFrQkM7SUFDM0I7SUFDQSxPQUFPd0I7QUFDVDtBQUVBLFNBQVNHLDRCQUE0QkosTUFBcUIsRUFBRWhCLE1BQWM7SUFDeEUsSUFBSUEsV0FBVyxHQUFHO1FBQ2hCLE9BQU87SUFDVDtJQUNBLE9BQU9nQixPQUFPRSxjQUFjLEdBQUdDLElBQUksQ0FBQztRQUNsQyxNQUFNMUIsWUFBWWI7UUFDbEIsSUFBSUMsa0JBQWtCWSxZQUFZO1lBQ2hDLE1BQU1DLFNBQVNELFVBQVVDLE1BQU07WUFDL0IsTUFBTUUsYUFBYUYsT0FBT0csT0FBTztZQUNqQyxNQUFNd0IsY0FBY3pCLFdBQVcwQixrQkFBa0I7WUFDakQsT0FBT3hDLFlBQVl1QyxnQkFBZ0JBLFlBQVlFLFlBQVk7UUFDN0Q7UUFDQSxPQUFPO0lBQ1Q7QUFDRjtBQUVBLFNBQVNDLGdCQUFnQkMsUUFBb0I7SUFDM0MsSUFBSXJDLE1BQU1vQyxlQUFlLEVBQUU7UUFDekJwQyxNQUFNb0MsZUFBZSxDQUFDQztJQUN4QixPQUFPO1FBQ0xBO0lBQ0Y7QUFDRjtBQUVBLHdEQUF3RDtBQUN4RCxPQUFPLFNBQVNDLGdCQUNkQyxPQUFvQixFQUNwQkMsYUFBc0I7SUFFdEIsSUFBSUMsUUFBUUMsaUJBQWlCSDtJQUM3QixNQUFNSSxzQkFBc0JGLE1BQU1HLFFBQVEsS0FBSztJQUMvQyxNQUFNQyxnQkFBZ0JMLGdCQUFnQix5QkFBeUI7SUFDL0QsSUFBSUMsTUFBTUcsUUFBUSxLQUFLLFNBQVM7UUFDOUIsT0FBT0UsU0FBU0MsSUFBSTtJQUN0QjtJQUNBLElBQUssSUFBSUMsU0FBNkJULFNBQVVTLFNBQVNBLE9BQU9DLGFBQWEsRUFBSztRQUNoRlIsUUFBUUMsaUJBQWlCTTtRQUN6QixJQUFJTCx1QkFBdUJGLE1BQU1HLFFBQVEsS0FBSyxVQUFVO1lBQ3REO1FBQ0Y7UUFDQSxJQUFJQyxjQUFjSyxJQUFJLENBQUNULE1BQU1VLFFBQVEsR0FBR1YsTUFBTVcsU0FBUyxHQUFHWCxNQUFNWSxTQUFTLEdBQUc7WUFDMUUsT0FBT0w7UUFDVDtJQUNGO0lBQ0EsT0FBT0YsU0FBU0MsSUFBSTtBQUN0QjtBQUVBLFNBQVNPLHFCQUFxQixRQUFRLG1CQUFrQjtBQW1CeEQsT0FBTyxNQUFNQyw0QkFFUjNELGNBQWMsNkJBQTRCO0FBRS9DLE9BQU8sU0FBUzRELDJCQUEyQixFQUN6Q0MsZUFBZSxFQUNmQyxVQUFVLEVBQ1ZDLGlCQUFpQixFQUNqQkMsWUFBWSxFQUNaQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsYUFBYSxFQUNiQyxjQUFjLEVBQ2RDLFNBQVMsRUFDZ0I7SUFDekIsTUFBTSxDQUFDckMsT0FBTyxHQUFHeEM7SUFDakIsTUFBTSxDQUFDOEUsWUFBWUMsY0FBYyxHQUFHcEUsU0FBZ0M7SUFDcEUsTUFBTXFFLG1CQUFtQmxFLGlCQUFpQndELFlBQVlRLFlBQVlDLGVBQWVWO0lBRWpGLE1BQU1ZLGlCQUFpQnhFLFlBQVk7UUFDakNzRSxjQUFjO1FBQ2QsSUFBSU4sV0FBVyxRQUFRSyxlQUFlLE1BQU07WUFDMUNMO1FBQ0Y7SUFDRixHQUFHO1FBQUNBO1FBQVNLO0tBQVc7SUFFeEIsTUFBTUksZ0JBQWdCekUsWUFDcEIsQ0FBQzBFO1FBQ0NKLGNBQWNJO1FBQ2QsSUFBSVQsVUFBVSxRQUFRSSxlQUFlLE1BQU07WUFDekNKLE9BQU9TO1FBQ1Q7SUFDRixHQUNBO1FBQUNUO1FBQVFJO0tBQVc7SUFHdEIsb0dBQW9HO0lBQ3BHcEUsVUFBVTtRQUNSLE9BQU9SLGNBQ0xzQyxPQUFPNEMsZUFBZSxDQUNwQmpCLDJCQUNBLENBQUMsRUFBRWtCLElBQUksRUFBRTtZQUNQN0MsT0FBT0UsY0FBYyxHQUFHQyxJQUFJLENBQUM7Z0JBQzNCLE1BQU0yQyxRQUF1QjtvQkFDM0IxRCxZQUFZO29CQUNaMkQsZ0JBQWdCO29CQUNoQkMsbUJBQW1CO2dCQUNyQjtnQkFDQSxJQUFJRixVQUFVLFFBQVEsQ0FBQzFDLDRCQUE0QkosUUFBUThDLE1BQU0xRCxVQUFVLEdBQUc7b0JBQzVFLElBQUl5RCxTQUFTLE1BQU07d0JBQ2pCLE1BQU12RCxlQUFlVSxPQUFPaUQsT0FBTyxJQUFJQzt3QkFDdkMsTUFBTTdELFFBQVFDLGFBQWE0QixRQUFRLENBQUNpQyxXQUFXO3dCQUUvQyxNQUFNQyxvQkFBb0JqRSxtQkFBbUIyRCxNQUFNMUQsVUFBVSxFQUFFQyxPQUFPQzt3QkFDdEUsSUFBSThELHNCQUFzQixNQUFNOzRCQUM5QjVDLGdCQUFnQixJQUNka0MsY0FBYztvQ0FDWlcsU0FBUzt3Q0FDUCxPQUFPaEUsTUFBTWlFLHFCQUFxQjtvQ0FDcEM7b0NBQ0FSO2dDQUNGO3dCQUVKO3dCQUVBO29CQUNGO2dCQUNGO1lBQ0Y7WUFFQSxPQUFPO1FBQ1QsR0FDQS9FO0lBR04sR0FBRztRQUFDaUM7UUFBUTBDO0tBQWM7SUFFMUJ4RSxVQUFVO1FBQ1IsTUFBTXFGLGlCQUFpQjtZQUNyQnZELE9BQU9FLGNBQWMsR0FBR0MsSUFBSSxDQUFDO2dCQUMzQixNQUFNYixlQUFlVSxPQUFPaUQsT0FBTyxJQUFJQztnQkFDdkMsTUFBTTdELFFBQVFDLGFBQWE0QixRQUFRLENBQUNpQyxXQUFXO2dCQUMvQyxNQUFNMUUsWUFBWWI7Z0JBQ2xCLE1BQU1xQyxPQUFPRixzQkFBc0JDO2dCQUVuQyxJQUNFLENBQUNuQyxrQkFBa0JZLGNBQ25CLENBQUNBLFVBQVVnQixXQUFXLE1BQ3RCUSxTQUFTLFFBQ1RaLFVBQVUsTUFDVjtvQkFDQW9EO29CQUNBO2dCQUNGO2dCQUVBLE1BQU1LLFFBQVFULFVBQVU7b0JBQUVyQztvQkFBUXdELE9BQU92RDtnQkFBSztnQkFDOUNrQyxjQUFjVyxRQUFRQSxNQUFNQyxjQUFjLEdBQUc7Z0JBRTdDLElBQUlELFVBQVUsUUFBUSxDQUFDMUMsNEJBQTRCSixRQUFROEMsTUFBTTFELFVBQVUsR0FBRztvQkFDNUUsTUFBTWdFLG9CQUFvQmpFLG1CQUFtQjJELE1BQU0xRCxVQUFVLEVBQUVDLE9BQU9DO29CQUN0RSxJQUFJOEQsc0JBQXNCLE1BQU07d0JBQzlCNUMsZ0JBQWdCLElBQ2RrQyxjQUFjO2dDQUNaVyxTQUFTO29DQUNQLE9BQU9oRSxNQUFNaUUscUJBQXFCO2dDQUNwQztnQ0FDQVI7NEJBQ0Y7d0JBRUY7b0JBQ0Y7Z0JBQ0Y7Z0JBQ0FMO1lBQ0Y7UUFDRjtRQUVBLE1BQU1nQix1QkFBdUJ6RCxPQUFPMEQsc0JBQXNCLENBQUNIO1FBRTNELE9BQU87WUFDTEU7UUFDRjtJQUNGLEdBQUc7UUFBQ3pEO1FBQVFxQztRQUFXRjtRQUFlRztRQUFZRztRQUFnQkM7S0FBYztJQUVoRixPQUFPSixlQUFlLFFBQVF0QyxXQUFXLE9BQU8scUJBQzlDLG9CQUFDM0I7UUFDQ21FLGtCQUFrQkE7UUFDbEJtQixPQUFPbEI7UUFDUHpDLFFBQVFBO1FBQ1IrQixtQkFBbUJBO1FBQ25CQyxjQUFjQTtRQUNkSSxnQkFBZ0JBO1FBQ2hCRSxZQUFZQTtRQUNac0IsMEJBQUFBOztBQUdOIn0=
207
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type {\n LexicalCommand,\n LexicalEditor,\n ParagraphNode,\n RangeSelection,\n TextNode,\n} from 'lexical'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, createCommand } =\n lexicalImport\n\nimport { 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 { SlashMenuGroup, SlashMenuOption } 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\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\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groupsWithOptions: Array<SlashMenuGroup>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n onSelectOption: (\n option: SlashMenuOption,\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 groupsWithOptions,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n onSelectOption,\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 (match !== null && !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 groupsWithOptions={groupsWithOptions}\n menuRenderFn={menuRenderFn}\n onSelectOption={onSelectOption}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$getSelection","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_LOW","createCommand","useCallback","useEffect","useState","React","LexicalMenu","useMenuAnchorRef","PUNCTUATION","getTextUpToAnchor","selection","anchor","type","anchorNode","getNode","isSimpleText","anchorOffset","offset","getTextContent","slice","tryToPositionRange","leadOffset","range","editorWindow","domSelection","getSelection","isCollapsed","startOffset","endOffset","setStart","setEnd","error","getQueryTextForSearch","editor","text","getEditorState","read","isSelectionOnEntityBoundary","prevSibling","getPreviousSibling","isTextEntity","startTransition","callback","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","document","body","parent","parentElement","test","overflow","overflowY","overflowX","useDynamicPositioning","ENABLE_SLASH_MENU_COMMAND","LexicalTypeaheadMenuPlugin","anchorClassName","anchorElem","groupsWithOptions","menuRenderFn","onClose","onOpen","onQueryChange","onSelectOption","triggerFn","resolution","setResolution","anchorElementRef","closeTypeahead","openTypeahead","res","registerCommand","node","match","matchingString","replaceableString","_window","window","createRange","isRangePositioned","getRect","getBoundingClientRect","updateListener","query","removeUpdateListener","registerUpdateListener","close","shouldSplitNodeWithQuery"],"mappings":"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"}
@@ -36,4 +36,4 @@ export class SlashMenuGroup {
36
36
  options;
37
37
  }
38
38
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSTE4biB9IGZyb20gJ0BwYXlsb2FkY21zL3RyYW5zbGF0aW9ucydcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY2xhc3MgU2xhc2hNZW51T3B0aW9uIHtcbiAgLy8gSWNvbiBmb3IgZGlzcGxheVxuICBJY29uOiBSZWFjdC5GQ1xuXG4gIGRpc3BsYXlOYW1lPzogKCh7IGkxOG4gfTogeyBpMThuOiBJMThuIH0pID0+IHN0cmluZykgfCBzdHJpbmdcbiAgLy8gVXNlZCBmb3IgY2xhc3MgbmFtZXMgYW5kLCBpZiBkaXNwbGF5TmFtZSBpcyBub3QgcHJvdmlkZWQsIGZvciBkaXNwbGF5LlxuICBrZXk6IHN0cmluZ1xuICAvLyBUQkRcbiAga2V5Ym9hcmRTaG9ydGN1dD86IHN0cmluZ1xuICAvLyBGb3IgZXh0cmEgc2VhcmNoaW5nLlxuICBrZXl3b3JkczogQXJyYXk8c3RyaW5nPlxuICAvLyBXaGF0IGhhcHBlbnMgd2hlbiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uP1xuICBvblNlbGVjdDogKHsgZWRpdG9yLCBxdWVyeVN0cmluZyB9OiB7IGVkaXRvcjogTGV4aWNhbEVkaXRvcjsgcXVlcnlTdHJpbmc6IHN0cmluZyB9KSA9PiB2b2lkXG5cbiAgcmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+XG5cbiAgY29uc3RydWN0b3IoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgSWNvbjogUmVhY3QuRkNcbiAgICAgIGRpc3BsYXlOYW1lPzogKCh7IGkxOG4gfTogeyBpMThuOiBJMThuIH0pID0+IHN0cmluZykgfCBzdHJpbmdcbiAgICAgIGtleWJvYXJkU2hvcnRjdXQ/OiBzdHJpbmdcbiAgICAgIGtleXdvcmRzPzogQXJyYXk8c3RyaW5nPlxuICAgICAgb25TZWxlY3Q6ICh7IGVkaXRvciwgcXVlcnlTdHJpbmcgfTogeyBlZGl0b3I6IExleGljYWxFZGl0b3I7IHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfSkgPT4gdm9pZFxuICAgIH0sXG4gICkge1xuICAgIHRoaXMua2V5ID0ga2V5XG4gICAgdGhpcy5yZWYgPSB7IGN1cnJlbnQ6IG51bGwgfVxuICAgIHRoaXMuc2V0UmVmRWxlbWVudCA9IHRoaXMuc2V0UmVmRWxlbWVudC5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZVxuICAgIHRoaXMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdXG4gICAgdGhpcy5JY29uID0gb3B0aW9ucy5JY29uXG4gICAgdGhpcy5rZXlib2FyZFNob3J0Y3V0ID0gb3B0aW9ucy5rZXlib2FyZFNob3J0Y3V0XG4gICAgdGhpcy5vblNlbGVjdCA9IG9wdGlvbnMub25TZWxlY3QuYmluZCh0aGlzKVxuICB9XG5cbiAgc2V0UmVmRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICB0aGlzLnJlZiA9IHsgY3VycmVudDogZWxlbWVudCB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNsYXNoTWVudUdyb3VwIHtcbiAgLy8gVXNlZCBmb3IgY2xhc3MgbmFtZXMgYW5kLCBpZiBkaXNwbGF5TmFtZSBpcyBub3QgcHJvdmlkZWQsIGZvciBkaXNwbGF5LlxuICBkaXNwbGF5TmFtZT86ICgoeyBpMThuIH06IHsgaTE4bjogSTE4biB9KSA9PiBzdHJpbmcpIHwgc3RyaW5nXG4gIGtleTogc3RyaW5nXG4gIG9wdGlvbnM6IEFycmF5PFNsYXNoTWVudU9wdGlvbj5cbn1cbiJdLCJuYW1lcyI6WyJTbGFzaE1lbnVPcHRpb24iLCJJY29uIiwiZGlzcGxheU5hbWUiLCJrZXkiLCJrZXlib2FyZFNob3J0Y3V0Iiwia2V5d29yZHMiLCJvblNlbGVjdCIsInJlZiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImN1cnJlbnQiLCJzZXRSZWZFbGVtZW50IiwiYmluZCIsImVsZW1lbnQiLCJTbGFzaE1lbnVHcm91cCJdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxNQUFNQTtJQUNYLG1CQUFtQjtJQUNuQkMsS0FBYztJQUVkQyxZQUE2RDtJQUM3RCx5RUFBeUU7SUFDekVDLElBQVc7SUFDWCxNQUFNO0lBQ05DLGlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkJDLFNBQXVCO0lBQ3ZCLDRDQUE0QztJQUM1Q0MsU0FBMkY7SUFFM0ZDLElBQTBDO0lBRTFDQyxZQUNFTCxHQUFXLEVBQ1hNLE9BTUMsQ0FDRDtRQUNBLElBQUksQ0FBQ04sR0FBRyxHQUFHQTtRQUNYLElBQUksQ0FBQ0ksR0FBRyxHQUFHO1lBQUVHLFNBQVM7UUFBSztRQUMzQixJQUFJLENBQUNDLGFBQWEsR0FBRyxJQUFJLENBQUNBLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFFakQsSUFBSSxDQUFDVixXQUFXLEdBQUdPLFFBQVFQLFdBQVc7UUFDdEMsSUFBSSxDQUFDRyxRQUFRLEdBQUdJLFFBQVFKLFFBQVEsSUFBSSxFQUFFO1FBQ3RDLElBQUksQ0FBQ0osSUFBSSxHQUFHUSxRQUFRUixJQUFJO1FBQ3hCLElBQUksQ0FBQ0csZ0JBQWdCLEdBQUdLLFFBQVFMLGdCQUFnQjtRQUNoRCxJQUFJLENBQUNFLFFBQVEsR0FBR0csUUFBUUgsUUFBUSxDQUFDTSxJQUFJLENBQUMsSUFBSTtJQUM1QztJQUVBRCxjQUFjRSxPQUEyQixFQUFFO1FBQ3pDLElBQUksQ0FBQ04sR0FBRyxHQUFHO1lBQUVHLFNBQVNHO1FBQVE7SUFDaEM7QUFDRjtBQUVBLE9BQU8sTUFBTUM7SUFDWCx5RUFBeUU7SUFDekVaLFlBQTZEO0lBQzdEQyxJQUFXO0lBQ1hNLFFBQStCO0FBQ2pDIn0=
39
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { LexicalEditor } from 'lexical'\nimport type { MutableRefObject } from 'react'\nimport type React from 'react'\n\nexport class SlashMenuOption {\n // Icon for display\n Icon: React.FC\n\n displayName?: (({ i18n }: { i18n: I18n }) => string) | string\n // Used for class names and, if displayName is not provided, for display.\n key: string\n // TBD\n keyboardShortcut?: string\n // For extra searching.\n keywords: Array<string>\n // What happens when you select this option?\n onSelect: ({ editor, queryString }: { editor: LexicalEditor; queryString: string }) => void\n\n ref?: MutableRefObject<HTMLElement | null>\n\n constructor(\n key: string,\n options: {\n Icon: React.FC\n displayName?: (({ i18n }: { i18n: I18n }) => string) | string\n keyboardShortcut?: string\n keywords?: Array<string>\n onSelect: ({ editor, queryString }: { editor: LexicalEditor; queryString: string }) => void\n },\n ) {\n this.key = key\n this.ref = { current: null }\n this.setRefElement = this.setRefElement.bind(this)\n\n this.displayName = options.displayName\n this.keywords = options.keywords || []\n this.Icon = options.Icon\n this.keyboardShortcut = options.keyboardShortcut\n this.onSelect = options.onSelect.bind(this)\n }\n\n setRefElement(element: HTMLElement | null) {\n this.ref = { current: element }\n }\n}\n\nexport class SlashMenuGroup {\n // Used for class names and, if displayName is not provided, for display.\n displayName?: (({ i18n }: { i18n: I18n }) => string) | string\n key: string\n options: Array<SlashMenuOption>\n}\n"],"names":["SlashMenuOption","Icon","displayName","key","keyboardShortcut","keywords","onSelect","ref","constructor","options","current","setRefElement","bind","element","SlashMenuGroup"],"mappings":"AAKA,OAAO,MAAMA;IACX,mBAAmB;IACnBC,KAAc;IAEdC,YAA6D;IAC7D,yEAAyE;IACzEC,IAAW;IACX,MAAM;IACNC,iBAAyB;IACzB,uBAAuB;IACvBC,SAAuB;IACvB,4CAA4C;IAC5CC,SAA2F;IAE3FC,IAA0C;IAE1CC,YACEL,GAAW,EACXM,OAMC,CACD;QACA,IAAI,CAACN,GAAG,GAAGA;QACX,IAAI,CAACI,GAAG,GAAG;YAAEG,SAAS;QAAK;QAC3B,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACC,IAAI,CAAC,IAAI;QAEjD,IAAI,CAACV,WAAW,GAAGO,QAAQP,WAAW;QACtC,IAAI,CAACG,QAAQ,GAAGI,QAAQJ,QAAQ,IAAI,EAAE;QACtC,IAAI,CAACJ,IAAI,GAAGQ,QAAQR,IAAI;QACxB,IAAI,CAACG,gBAAgB,GAAGK,QAAQL,gBAAgB;QAChD,IAAI,CAACE,QAAQ,GAAGG,QAAQH,QAAQ,CAACM,IAAI,CAAC,IAAI;IAC5C;IAEAD,cAAcE,OAA2B,EAAE;QACzC,IAAI,CAACN,GAAG,GAAG;YAAEG,SAASG;QAAQ;IAChC;AACF;AAEA,OAAO,MAAMC;IACX,yEAAyE;IACzEZ,YAA6D;IAC7DC,IAAW;IACXM,QAA+B;AACjC"}
@@ -169,4 +169,4 @@ export function SlashMenuPlugin({ anchorElem = document.body }) {
169
169
  }));
170
170
  }
171
171
 
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgVGV4dE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgbGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydCBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0LmpzJ1xuY29uc3QgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gPSBsZXhpY2FsQ29tcG9zZXJDb250ZXh0SW1wb3J0XG5cbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdWknXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgdHlwZSB7IFNsYXNoTWVudUdyb3VwLCBTbGFzaE1lbnVPcHRpb24gfSBmcm9tICcuL0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL3R5cGVzLmpzJ1xuXG5pbXBvcnQgeyB1c2VFZGl0b3JDb25maWdDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29uZmlnL2NsaWVudC9FZGl0b3JDb25maWdQcm92aWRlci5qcydcbmltcG9ydCB7IExleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luIH0gZnJvbSAnLi9MZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbi9pbmRleC5qcydcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuaW1wb3J0IHsgdXNlTWVudVRyaWdnZXJNYXRjaCB9IGZyb20gJy4vdXNlTWVudVRyaWdnZXJNYXRjaC5qcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ3NsYXNoLW1lbnUtcG9wdXAnXG5cbmZ1bmN0aW9uIFNsYXNoTWVudUl0ZW0oe1xuICBpc1NlbGVjdGVkLFxuICBvbkNsaWNrLFxuICBvbk1vdXNlRW50ZXIsXG4gIG9wdGlvbixcbn06IHtcbiAgaW5kZXg6IG51bWJlclxuICBpc1NlbGVjdGVkOiBib29sZWFuXG4gIG9uQ2xpY2s6ICgpID0+IHZvaWRcbiAgb25Nb3VzZUVudGVyOiAoKSA9PiB2b2lkXG4gIG9wdGlvbjogU2xhc2hNZW51T3B0aW9uXG59KSB7XG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuXG4gIGxldCBjbGFzc05hbWUgPSBgJHtiYXNlQ2xhc3N9X19pdGVtICR7YmFzZUNsYXNzfV9faXRlbS0ke29wdGlvbi5rZXl9YFxuICBpZiAoaXNTZWxlY3RlZCkge1xuICAgIGNsYXNzTmFtZSArPSBgICR7YmFzZUNsYXNzfV9faXRlbS0tc2VsZWN0ZWRgXG4gIH1cblxuICBsZXQgdGl0bGUgPSBvcHRpb24ua2V5XG4gIGlmIChvcHRpb24uZGlzcGxheU5hbWUpIHtcbiAgICB0aXRsZSA9XG4gICAgICB0eXBlb2Ygb3B0aW9uLmRpc3BsYXlOYW1lID09PSAnZnVuY3Rpb24nID8gb3B0aW9uLmRpc3BsYXlOYW1lKHsgaTE4biB9KSA6IG9wdGlvbi5kaXNwbGF5TmFtZVxuICB9XG4gIC8vIENyb3AgdGl0bGUgdG8gbWF4LiA1MCBjaGFyYWN0ZXJzXG4gIGlmICh0aXRsZS5sZW5ndGggPiAyNSkge1xuICAgIHRpdGxlID0gdGl0bGUuc3Vic3RyaW5nKDAsIDI1KSArICcuLi4nXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGFyaWEtc2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGlkPXtiYXNlQ2xhc3MgKyAnX19pdGVtLScgKyBvcHRpb24ua2V5fVxuICAgICAga2V5PXtvcHRpb24ua2V5fVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIG9uTW91c2VFbnRlcj17b25Nb3VzZUVudGVyfVxuICAgICAgcmVmPXtvcHRpb24uc2V0UmVmRWxlbWVudH1cbiAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge29wdGlvbj8uSWNvbiAmJiA8b3B0aW9uLkljb24gLz59XG5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faXRlbS10ZXh0YH0+e3RpdGxlfTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU2xhc2hNZW51UGx1Z2luKHtcbiAgYW5jaG9yRWxlbSA9IGRvY3VtZW50LmJvZHksXG59OiB7XG4gIGFuY2hvckVsZW0/OiBIVE1MRWxlbWVudFxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgW3F1ZXJ5U3RyaW5nLCBzZXRRdWVyeVN0cmluZ10gPSB1c2VTdGF0ZTxudWxsIHwgc3RyaW5nPihudWxsKVxuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuXG4gIGNvbnN0IGNoZWNrRm9yVHJpZ2dlck1hdGNoID0gdXNlTWVudVRyaWdnZXJNYXRjaCgnLycsIHtcbiAgICBtaW5MZW5ndGg6IDAsXG4gIH0pXG5cbiAgY29uc3QgZ2V0RHluYW1pY09wdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgbGV0IGdyb3VwV2l0aE9wdGlvbnM6IEFycmF5PFNsYXNoTWVudUdyb3VwPiA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGR5bmFtaWNPcHRpb24gb2YgZWRpdG9yQ29uZmlnLmZlYXR1cmVzLnNsYXNoTWVudS5keW5hbWljT3B0aW9ucykge1xuICAgICAgY29uc3QgZHluYW1pY0dyb3VwV2l0aE9wdGlvbnMgPSBkeW5hbWljT3B0aW9uKHtcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBxdWVyeVN0cmluZyxcbiAgICAgIH0pXG4gICAgICBncm91cFdpdGhPcHRpb25zID0gZ3JvdXBXaXRoT3B0aW9ucy5jb25jYXQoZHluYW1pY0dyb3VwV2l0aE9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwV2l0aE9wdGlvbnNcbiAgfSwgW2VkaXRvciwgcXVlcnlTdHJpbmcsIGVkaXRvckNvbmZpZz8uZmVhdHVyZXNdKVxuXG4gIGNvbnN0IGdyb3VwczogU2xhc2hNZW51R3JvdXBbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBncm91cHNXaXRoT3B0aW9uczogU2xhc2hNZW51R3JvdXBbXSA9IFtdXG4gICAgZm9yIChjb25zdCBncm91cFdpdGhPcHRpb24gb2YgZWRpdG9yQ29uZmlnPy5mZWF0dXJlcy5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnMgPz8gW10pIHtcbiAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLnB1c2goZ3JvdXBXaXRoT3B0aW9uKVxuICAgIH1cblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgLy8gRmlsdGVyIGN1cnJlbnQgZ3JvdXBzIGZpcnN0XG4gICAgICBncm91cHNXaXRoT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIGxldCBvcHRpb25UaXRsZSA9IG9wdGlvbi5rZXlcbiAgICAgICAgICBpZiAob3B0aW9uLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICBvcHRpb25UaXRsZSA9XG4gICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24uZGlzcGxheU5hbWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IG9wdGlvbi5kaXNwbGF5TmFtZSh7IGkxOG4gfSlcbiAgICAgICAgICAgICAgICA6IG9wdGlvbi5kaXNwbGF5TmFtZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHF1ZXJ5U3RyaW5nLCAnZ2knKS5leGVjKG9wdGlvblRpdGxlKSB8fCBvcHRpb24ua2V5d29yZHMgIT0gbnVsbFxuICAgICAgICAgICAgPyBvcHRpb24ua2V5d29yZHMuc29tZSgoa2V5d29yZCkgPT4gbmV3IFJlZ0V4cChxdWVyeVN0cmluZywgJ2dpJykuZXhlYyhrZXl3b3JkKSlcbiAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgICBvcHRpb25zOiBmaWx0ZXJlZE9wdGlvbnMsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9KVxuXG4gICAgICBncm91cHNXaXRoT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwICE9IG51bGwpXG5cbiAgICAgIC8vIE5vdyBhZGQgZHluYW1pYyBncm91cHNcbiAgICAgIGNvbnN0IGR5bmFtaWNPcHRpb25Hcm91cHMgPSBnZXREeW5hbWljT3B0aW9ucygpXG5cbiAgICAgIC8vIG1lcmdlIGR5bmFtaWMgb3B0aW9ucyBpbnRvIGdyb3Vwc1xuICAgICAgZm9yIChjb25zdCBkeW5hbWljR3JvdXAgb2YgZHluYW1pY09wdGlvbkdyb3Vwcykge1xuICAgICAgICAvLyAxLiBmaW5kIHRoZSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgb3IgY3JlYXRlIG5ldyBvbmVcbiAgICAgICAgbGV0IGdyb3VwID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmluZCgoZ3JvdXApID0+IGdyb3VwLmtleSA9PT0gZHluYW1pY0dyb3VwLmtleSlcbiAgICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICAgIGdyb3VwID0ge1xuICAgICAgICAgICAgLi4uZHluYW1pY0dyb3VwLFxuICAgICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmlsdGVyKChncm91cCkgPT4gZ3JvdXAua2V5ICE9PSBkeW5hbWljR3JvdXAua2V5KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQWRkIG9wdGlvbnMgdG8gZ3JvdXAgb3B0aW9ucyBhcnJheSBhbmQgYWRkIHRvIHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnNcbiAgICAgICAgaWYgKGdyb3VwPy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICBncm91cC5vcHRpb25zID0gZ3JvdXAub3B0aW9ucy5jb25jYXQoZ3JvdXAub3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5wdXNoKGdyb3VwKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncm91cHNXaXRoT3B0aW9uc1xuICB9LCBbZ2V0RHluYW1pY09wdGlvbnMsIHF1ZXJ5U3RyaW5nLCBlZGl0b3JDb25maWc/LmZlYXR1cmVzLCBpMThuXSlcblxuICBjb25zdCBvblNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24sXG4gICAgICBub2RlVG9SZW1vdmU6IFRleHROb2RlIHwgbnVsbCxcbiAgICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICAgIG1hdGNoaW5nU3RyaW5nOiBzdHJpbmcsXG4gICAgKSA9PiB7XG4gICAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkge1xuICAgICAgICAgIG5vZGVUb1JlbW92ZS5yZW1vdmUoKVxuICAgICAgICB9XG4gICAgICAgIHNlbGVjdGVkT3B0aW9uLm9uU2VsZWN0KHsgZWRpdG9yLCBxdWVyeVN0cmluZzogbWF0Y2hpbmdTdHJpbmcgfSlcbiAgICAgICAgY2xvc2VNZW51KClcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZWRpdG9yXSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPExleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luXG4gICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zPXtncm91cHN9XG4gICAgICAgIG1lbnVSZW5kZXJGbj17KFxuICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYsXG4gICAgICAgICAgeyBzZWxlY3RPcHRpb25BbmRDbGVhblVwLCBzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXkgfSxcbiAgICAgICAgKSA9PlxuICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCAmJiBncm91cHMubGVuZ3RoXG4gICAgICAgICAgICA/IFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YmFzZUNsYXNzfT5cbiAgICAgICAgICAgICAgICAgIHtncm91cHMubWFwKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXBUaXRsZSA9IGdyb3VwLmtleVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBncm91cFRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBncm91cC5kaXNwbGF5TmFtZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdyb3VwLmRpc3BsYXlOYW1lKHsgaTE4biB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdyb3VwLmRpc3BsYXlOYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXAgJHtiYXNlQ2xhc3N9X19ncm91cC0ke2dyb3VwLmtleX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2dyb3VwLXRpdGxlYH0+e2dyb3VwVGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbiwgb2k6IG51bWJlcikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U2xhc2hNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtvaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZE9wdGlvbktleSA9PT0gb3B0aW9uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShvcHRpb24ua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+LFxuICAgICAgICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgb25RdWVyeUNoYW5nZT17c2V0UXVlcnlTdHJpbmd9XG4gICAgICAgIG9uU2VsZWN0T3B0aW9uPXtvblNlbGVjdE9wdGlvbn1cbiAgICAgICAgdHJpZ2dlckZuPXtjaGVja0ZvclRyaWdnZXJNYXRjaH1cbiAgICAgIC8+XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKVxufVxuIl0sIm5hbWVzIjpbImxleGljYWxDb21wb3NlckNvbnRleHRJbXBvcnQiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiUmVhY3RET00iLCJ1c2VFZGl0b3JDb25maWdDb250ZXh0IiwiTGV4aWNhbFR5cGVhaGVhZE1lbnVQbHVnaW4iLCJ1c2VNZW51VHJpZ2dlck1hdGNoIiwiYmFzZUNsYXNzIiwiU2xhc2hNZW51SXRlbSIsImlzU2VsZWN0ZWQiLCJvbkNsaWNrIiwib25Nb3VzZUVudGVyIiwib3B0aW9uIiwiaTE4biIsImNsYXNzTmFtZSIsImtleSIsInRpdGxlIiwiZGlzcGxheU5hbWUiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJidXR0b24iLCJhcmlhLXNlbGVjdGVkIiwiaWQiLCJyZWYiLCJzZXRSZWZFbGVtZW50Iiwicm9sZSIsInRhYkluZGV4IiwidHlwZSIsIkljb24iLCJzcGFuIiwiU2xhc2hNZW51UGx1Z2luIiwiYW5jaG9yRWxlbSIsImRvY3VtZW50IiwiYm9keSIsImVkaXRvciIsInF1ZXJ5U3RyaW5nIiwic2V0UXVlcnlTdHJpbmciLCJlZGl0b3JDb25maWciLCJjaGVja0ZvclRyaWdnZXJNYXRjaCIsIm1pbkxlbmd0aCIsImdldER5bmFtaWNPcHRpb25zIiwiZ3JvdXBXaXRoT3B0aW9ucyIsImR5bmFtaWNPcHRpb24iLCJmZWF0dXJlcyIsInNsYXNoTWVudSIsImR5bmFtaWNPcHRpb25zIiwiZHluYW1pY0dyb3VwV2l0aE9wdGlvbnMiLCJjb25jYXQiLCJncm91cHMiLCJncm91cHNXaXRoT3B0aW9ucyIsImdyb3VwV2l0aE9wdGlvbiIsInB1c2giLCJtYXAiLCJncm91cCIsImZpbHRlcmVkT3B0aW9ucyIsIm9wdGlvbnMiLCJmaWx0ZXIiLCJvcHRpb25UaXRsZSIsIlJlZ0V4cCIsImV4ZWMiLCJrZXl3b3JkcyIsInNvbWUiLCJrZXl3b3JkIiwiZHluYW1pY09wdGlvbkdyb3VwcyIsImR5bmFtaWNHcm91cCIsImZpbmQiLCJvblNlbGVjdE9wdGlvbiIsInNlbGVjdGVkT3B0aW9uIiwibm9kZVRvUmVtb3ZlIiwiY2xvc2VNZW51IiwibWF0Y2hpbmdTdHJpbmciLCJ1cGRhdGUiLCJyZW1vdmUiLCJvblNlbGVjdCIsIkZyYWdtZW50IiwibWVudVJlbmRlckZuIiwiYW5jaG9yRWxlbWVudFJlZiIsInNlbGVjdE9wdGlvbkFuZENsZWFuVXAiLCJzZWxlY3RlZE9wdGlvbktleSIsInNldFNlbGVjdGVkT3B0aW9uS2V5IiwiY3VycmVudCIsImNyZWF0ZVBvcnRhbCIsImRpdiIsImdyb3VwVGl0bGUiLCJvaSIsImluZGV4Iiwib25RdWVyeUNoYW5nZSIsInRyaWdnZXJGbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFHQSxPQUFPQSxrQ0FBa0MsMkNBQTBDO0FBQ25GLE1BQU0sRUFBRUMseUJBQXlCLEVBQUUsR0FBR0Q7QUFFdEMsU0FBU0UsY0FBYyxRQUFRLGlCQUFnQjtBQUMvQyxTQUFTQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFDdEQsWUFBWUMsV0FBVyxRQUFPO0FBQzlCLFlBQVlDLGNBQWMsWUFBVztBQUlyQyxTQUFTQyxzQkFBc0IsUUFBUSw4Q0FBNkM7QUFDcEYsU0FBU0MsMEJBQTBCLFFBQVEsd0NBQXVDO0FBQ2xGLE9BQU8sZUFBYztBQUNyQixTQUFTQyxtQkFBbUIsUUFBUSwyQkFBMEI7QUFFOUQsTUFBTUMsWUFBWTtBQUVsQixTQUFTQyxjQUFjLEVBQ3JCQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsWUFBWSxFQUNaQyxNQUFNLEVBT1A7SUFDQyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHZjtJQUVqQixJQUFJZ0IsWUFBWSxDQUFDLEVBQUVQLFVBQVUsT0FBTyxFQUFFQSxVQUFVLE9BQU8sRUFBRUssT0FBT0csR0FBRyxDQUFDLENBQUM7SUFDckUsSUFBSU4sWUFBWTtRQUNkSyxhQUFhLENBQUMsQ0FBQyxFQUFFUCxVQUFVLGdCQUFnQixDQUFDO0lBQzlDO0lBRUEsSUFBSVMsUUFBUUosT0FBT0csR0FBRztJQUN0QixJQUFJSCxPQUFPSyxXQUFXLEVBQUU7UUFDdEJELFFBQ0UsT0FBT0osT0FBT0ssV0FBVyxLQUFLLGFBQWFMLE9BQU9LLFdBQVcsQ0FBQztZQUFFSjtRQUFLLEtBQUtELE9BQU9LLFdBQVc7SUFDaEc7SUFDQSxtQ0FBbUM7SUFDbkMsSUFBSUQsTUFBTUUsTUFBTSxHQUFHLElBQUk7UUFDckJGLFFBQVFBLE1BQU1HLFNBQVMsQ0FBQyxHQUFHLE1BQU07SUFDbkM7SUFFQSxxQkFDRSxvQkFBQ0M7UUFDQ0MsaUJBQWVaO1FBQ2ZLLFdBQVdBO1FBQ1hRLElBQUlmLFlBQVksWUFBWUssT0FBT0csR0FBRztRQUN0Q0EsS0FBS0gsT0FBT0csR0FBRztRQUNmTCxTQUFTQTtRQUNUQyxjQUFjQTtRQUNkWSxLQUFLWCxPQUFPWSxhQUFhO1FBQ3pCQyxNQUFLO1FBQ0xDLFVBQVUsQ0FBQztRQUNYQyxNQUFLO09BRUpmLFFBQVFnQixzQkFBUSxvQkFBQ2hCLE9BQU9nQixJQUFJLHVCQUU3QixvQkFBQ0M7UUFBS2YsV0FBVyxDQUFDLEVBQUVQLFVBQVUsV0FBVyxDQUFDO09BQUdTO0FBR25EO0FBRUEsT0FBTyxTQUFTYyxnQkFBZ0IsRUFDOUJDLGFBQWFDLFNBQVNDLElBQUksRUFHM0I7SUFDQyxNQUFNLENBQUNDLE9BQU8sR0FBR3JDO0lBQ2pCLE1BQU0sQ0FBQ3NDLGFBQWFDLGVBQWUsR0FBR25DLFNBQXdCO0lBQzlELE1BQU0sRUFBRW9DLFlBQVksRUFBRSxHQUFHakM7SUFDekIsTUFBTSxFQUFFUyxJQUFJLEVBQUUsR0FBR2Y7SUFFakIsTUFBTXdDLHVCQUF1QmhDLG9CQUFvQixLQUFLO1FBQ3BEaUMsV0FBVztJQUNiO0lBRUEsTUFBTUMsb0JBQW9CekMsWUFBWTtRQUNwQyxJQUFJMEMsbUJBQTBDLEVBQUU7UUFFaEQsS0FBSyxNQUFNQyxpQkFBaUJMLGFBQWFNLFFBQVEsQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUU7WUFDMUUsTUFBTUMsMEJBQTBCSixjQUFjO2dCQUM1Q1I7Z0JBQ0FDO1lBQ0Y7WUFDQU0sbUJBQW1CQSxpQkFBaUJNLE1BQU0sQ0FBQ0Q7UUFDN0M7UUFFQSxPQUFPTDtJQUNULEdBQUc7UUFBQ1A7UUFBUUM7UUFBYUUsY0FBY007S0FBUztJQUVoRCxNQUFNSyxTQUEyQmhELFFBQVE7UUFDdkMsSUFBSWlELG9CQUFzQyxFQUFFO1FBQzVDLEtBQUssTUFBTUMsbUJBQW1CYixjQUFjTSxTQUFTQyxVQUFVSyxxQkFBcUIsRUFBRSxDQUFFO1lBQ3RGQSxrQkFBa0JFLElBQUksQ0FBQ0Q7UUFDekI7UUFFQSxJQUFJZixhQUFhO1lBQ2YsOEJBQThCO1lBQzlCYyxvQkFBb0JBLGtCQUFrQkcsR0FBRyxDQUFDLENBQUNDO2dCQUN6QyxNQUFNQyxrQkFBa0JELE1BQU1FLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM1QztvQkFDNUMsSUFBSTZDLGNBQWM3QyxPQUFPRyxHQUFHO29CQUM1QixJQUFJSCxPQUFPSyxXQUFXLEVBQUU7d0JBQ3RCd0MsY0FDRSxPQUFPN0MsT0FBT0ssV0FBVyxLQUFLLGFBQzFCTCxPQUFPSyxXQUFXLENBQUM7NEJBQUVKO3dCQUFLLEtBQzFCRCxPQUFPSyxXQUFXO29CQUMxQjtvQkFFQSxPQUFPLElBQUl5QyxPQUFPdkIsYUFBYSxNQUFNd0IsSUFBSSxDQUFDRixnQkFBZ0I3QyxPQUFPZ0QsUUFBUSxJQUFJLE9BQ3pFaEQsT0FBT2dELFFBQVEsQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLFVBQVksSUFBSUosT0FBT3ZCLGFBQWEsTUFBTXdCLElBQUksQ0FBQ0csWUFDckU7Z0JBQ047Z0JBQ0EsSUFBSVIsZ0JBQWdCcEMsTUFBTSxFQUFFO29CQUMxQixPQUFPO3dCQUNMLEdBQUdtQyxLQUFLO3dCQUNSRSxTQUFTRDtvQkFDWDtnQkFDRjtnQkFDQSxPQUFPO1lBQ1Q7WUFFQUwsb0JBQW9CQSxrQkFBa0JPLE1BQU0sQ0FBQyxDQUFDSCxRQUFVQSxTQUFTO1lBRWpFLHlCQUF5QjtZQUN6QixNQUFNVSxzQkFBc0J2QjtZQUU1QixvQ0FBb0M7WUFDcEMsS0FBSyxNQUFNd0IsZ0JBQWdCRCxvQkFBcUI7Z0JBQzlDLHlEQUF5RDtnQkFDekQsSUFBSVYsUUFBUUosa0JBQWtCZ0IsSUFBSSxDQUFDLENBQUNaLFFBQVVBLE1BQU10QyxHQUFHLEtBQUtpRCxhQUFhakQsR0FBRztnQkFDNUUsSUFBSSxDQUFDc0MsT0FBTztvQkFDVkEsUUFBUTt3QkFDTixHQUFHVyxZQUFZO3dCQUNmVCxTQUFTLEVBQUU7b0JBQ2I7Z0JBQ0YsT0FBTztvQkFDTE4sb0JBQW9CQSxrQkFBa0JPLE1BQU0sQ0FBQyxDQUFDSCxRQUFVQSxNQUFNdEMsR0FBRyxLQUFLaUQsYUFBYWpELEdBQUc7Z0JBQ3hGO2dCQUVBLHlGQUF5RjtnQkFDekYsSUFBSXNDLE9BQU9FLFNBQVNyQyxRQUFRO29CQUMxQm1DLE1BQU1FLE9BQU8sR0FBR0YsTUFBTUUsT0FBTyxDQUFDUixNQUFNLENBQUNNLE1BQU1FLE9BQU87Z0JBQ3BEO2dCQUNBTixrQkFBa0JFLElBQUksQ0FBQ0U7WUFDekI7UUFDRjtRQUVBLE9BQU9KO0lBQ1QsR0FBRztRQUFDVDtRQUFtQkw7UUFBYUUsY0FBY007UUFBVTlCO0tBQUs7SUFFakUsTUFBTXFELGlCQUFpQm5FLFlBQ3JCLENBQ0VvRSxnQkFDQUMsY0FDQUMsV0FDQUM7UUFFQXBDLE9BQU9xQyxNQUFNLENBQUM7WUFDWixJQUFJSCxjQUFjO2dCQUNoQkEsYUFBYUksTUFBTTtZQUNyQjtZQUNBTCxlQUFlTSxRQUFRLENBQUM7Z0JBQUV2QztnQkFBUUMsYUFBYW1DO1lBQWU7WUFDOUREO1FBQ0Y7SUFDRixHQUNBO1FBQUNuQztLQUFPO0lBR1YscUJBQ0Usb0JBQUNoQyxNQUFNd0UsUUFBUSxzQkFDYixvQkFBQ3JFO1FBQ0MwQixZQUFZQTtRQUNaa0IsbUJBQW1CRDtRQUNuQjJCLGNBQWMsQ0FDWkMsa0JBQ0EsRUFBRUMsc0JBQXNCLEVBQUVDLGlCQUFpQixFQUFFQyxvQkFBb0IsRUFBRSxHQUVuRUgsaUJBQWlCSSxPQUFPLElBQUloQyxPQUFPOUIsTUFBTSxpQkFDckNmLFNBQVM4RSxZQUFZLGVBQ25CLG9CQUFDQztnQkFBSXBFLFdBQVdQO2VBQ2J5QyxPQUFPSSxHQUFHLENBQUMsQ0FBQ0M7Z0JBQ1gsSUFBSThCLGFBQWE5QixNQUFNdEMsR0FBRztnQkFDMUIsSUFBSXNDLE1BQU1wQyxXQUFXLEVBQUU7b0JBQ3JCa0UsYUFDRSxPQUFPOUIsTUFBTXBDLFdBQVcsS0FBSyxhQUN6Qm9DLE1BQU1wQyxXQUFXLENBQUM7d0JBQUVKO29CQUFLLEtBQ3pCd0MsTUFBTXBDLFdBQVc7Z0JBQ3pCO2dCQUVBLHFCQUNFLG9CQUFDaUU7b0JBQ0NwRSxXQUFXLENBQUMsRUFBRVAsVUFBVSxRQUFRLEVBQUVBLFVBQVUsUUFBUSxFQUFFOEMsTUFBTXRDLEdBQUcsQ0FBQyxDQUFDO29CQUNqRUEsS0FBS3NDLE1BQU10QyxHQUFHO2lDQUVkLG9CQUFDbUU7b0JBQUlwRSxXQUFXLENBQUMsRUFBRVAsVUFBVSxhQUFhLENBQUM7bUJBQUc0RSxhQUM3QzlCLE1BQU1FLE9BQU8sQ0FBQ0gsR0FBRyxDQUFDLENBQUN4QyxRQUFRd0UsbUJBQzFCLG9CQUFDNUU7d0JBQ0M2RSxPQUFPRDt3QkFDUDNFLFlBQVlxRSxzQkFBc0JsRSxPQUFPRyxHQUFHO3dCQUM1Q0EsS0FBS0gsT0FBT0csR0FBRzt3QkFDZkwsU0FBUzs0QkFDUHFFLHFCQUFxQm5FLE9BQU9HLEdBQUc7NEJBQy9COEQsdUJBQXVCakU7d0JBQ3pCO3dCQUNBRCxjQUFjOzRCQUNab0UscUJBQXFCbkUsT0FBT0csR0FBRzt3QkFDakM7d0JBQ0FILFFBQVFBOztZQUtsQixLQUVGZ0UsaUJBQWlCSSxPQUFPLElBRTFCO1FBRU5NLGVBQWVsRDtRQUNmOEIsZ0JBQWdCQTtRQUNoQnFCLFdBQVdqRDs7QUFJbkIifQ==
172
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/field/lexical/plugins/SlashMenu/index.tsx"],"sourcesContent":["'use client'\nimport type { TextNode } from 'lexical'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport { useTranslation } from '@payloadcms/ui'\nimport { useCallback, useMemo, useState } from 'react'\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\n\nimport type { SlashMenuGroup, SlashMenuOption } from './LexicalTypeaheadMenuPlugin/types.js'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\nimport { LexicalTypeaheadMenuPlugin } from './LexicalTypeaheadMenuPlugin/index.js'\nimport './index.scss'\nimport { useMenuTriggerMatch } from './useMenuTriggerMatch.js'\n\nconst baseClass = 'slash-menu-popup'\n\nfunction SlashMenuItem({\n isSelected,\n onClick,\n onMouseEnter,\n option,\n}: {\n index: number\n isSelected: boolean\n onClick: () => void\n onMouseEnter: () => void\n option: SlashMenuOption\n}) {\n const { i18n } = useTranslation()\n\n let className = `${baseClass}__item ${baseClass}__item-${option.key}`\n if (isSelected) {\n className += ` ${baseClass}__item--selected`\n }\n\n let title = option.key\n if (option.displayName) {\n title =\n typeof option.displayName === 'function' ? option.displayName({ i18n }) : option.displayName\n }\n // Crop title to max. 50 characters\n if (title.length > 25) {\n title = title.substring(0, 25) + '...'\n }\n\n return (\n <button\n aria-selected={isSelected}\n className={className}\n id={baseClass + '__item-' + option.key}\n key={option.key}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n ref={option.setRefElement}\n role=\"option\"\n tabIndex={-1}\n type=\"button\"\n >\n {option?.Icon && <option.Icon />}\n\n <span className={`${baseClass}__item-text`}>{title}</span>\n </button>\n )\n}\n\nexport function SlashMenuPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n const [queryString, setQueryString] = useState<null | string>(null)\n const { editorConfig } = useEditorConfigContext()\n const { i18n } = useTranslation()\n\n const checkForTriggerMatch = useMenuTriggerMatch('/', {\n minLength: 0,\n })\n\n const getDynamicOptions = useCallback(() => {\n let groupWithOptions: Array<SlashMenuGroup> = []\n\n for (const dynamicOption of editorConfig.features.slashMenu.dynamicOptions) {\n const dynamicGroupWithOptions = dynamicOption({\n editor,\n queryString,\n })\n groupWithOptions = groupWithOptions.concat(dynamicGroupWithOptions)\n }\n\n return groupWithOptions\n }, [editor, queryString, editorConfig?.features])\n\n const groups: SlashMenuGroup[] = useMemo(() => {\n let groupsWithOptions: SlashMenuGroup[] = []\n for (const groupWithOption of editorConfig?.features.slashMenu.groupsWithOptions ?? []) {\n groupsWithOptions.push(groupWithOption)\n }\n\n if (queryString) {\n // Filter current groups first\n groupsWithOptions = groupsWithOptions.map((group) => {\n const filteredOptions = group.options.filter((option) => {\n let optionTitle = option.key\n if (option.displayName) {\n optionTitle =\n typeof option.displayName === 'function'\n ? option.displayName({ i18n })\n : option.displayName\n }\n\n return new RegExp(queryString, 'gi').exec(optionTitle) || option.keywords != null\n ? option.keywords.some((keyword) => new RegExp(queryString, 'gi').exec(keyword))\n : false\n })\n if (filteredOptions.length) {\n return {\n ...group,\n options: filteredOptions,\n }\n }\n return null\n })\n\n groupsWithOptions = groupsWithOptions.filter((group) => group != null)\n\n // Now add dynamic groups\n const dynamicOptionGroups = getDynamicOptions()\n\n // merge dynamic options into groups\n for (const dynamicGroup of dynamicOptionGroups) {\n // 1. find the group with the same name or create new one\n let group = groupsWithOptions.find((group) => group.key === dynamicGroup.key)\n if (!group) {\n group = {\n ...dynamicGroup,\n options: [],\n }\n } else {\n groupsWithOptions = groupsWithOptions.filter((group) => group.key !== dynamicGroup.key)\n }\n\n // 2. Add options to group options array and add to sanitized.slashMenu.groupsWithOptions\n if (group?.options?.length) {\n group.options = group.options.concat(group.options)\n }\n groupsWithOptions.push(group)\n }\n }\n\n return groupsWithOptions\n }, [getDynamicOptions, queryString, editorConfig?.features, i18n])\n\n const onSelectOption = useCallback(\n (\n selectedOption: SlashMenuOption,\n nodeToRemove: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => {\n editor.update(() => {\n if (nodeToRemove) {\n nodeToRemove.remove()\n }\n selectedOption.onSelect({ editor, queryString: matchingString })\n closeMenu()\n })\n },\n [editor],\n )\n\n return (\n <React.Fragment>\n <LexicalTypeaheadMenuPlugin\n anchorElem={anchorElem}\n groupsWithOptions={groups}\n menuRenderFn={(\n anchorElementRef,\n { selectOptionAndCleanUp, selectedOptionKey, setSelectedOptionKey },\n ) =>\n anchorElementRef.current && groups.length\n ? ReactDOM.createPortal(\n <div className={baseClass}>\n {groups.map((group) => {\n let groupTitle = group.key\n if (group.displayName) {\n groupTitle =\n typeof group.displayName === 'function'\n ? group.displayName({ i18n })\n : group.displayName\n }\n\n return (\n <div\n className={`${baseClass}__group ${baseClass}__group-${group.key}`}\n key={group.key}\n >\n <div className={`${baseClass}__group-title`}>{groupTitle}</div>\n {group.options.map((option, oi: number) => (\n <SlashMenuItem\n index={oi}\n isSelected={selectedOptionKey === option.key}\n key={option.key}\n onClick={() => {\n setSelectedOptionKey(option.key)\n selectOptionAndCleanUp(option)\n }}\n onMouseEnter={() => {\n setSelectedOptionKey(option.key)\n }}\n option={option}\n />\n ))}\n </div>\n )\n })}\n </div>,\n anchorElementRef.current,\n )\n : null\n }\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForTriggerMatch}\n />\n </React.Fragment>\n )\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","useTranslation","useCallback","useMemo","useState","React","ReactDOM","useEditorConfigContext","LexicalTypeaheadMenuPlugin","useMenuTriggerMatch","baseClass","SlashMenuItem","isSelected","onClick","onMouseEnter","option","i18n","className","key","title","displayName","length","substring","button","aria-selected","id","ref","setRefElement","role","tabIndex","type","Icon","span","SlashMenuPlugin","anchorElem","document","body","editor","queryString","setQueryString","editorConfig","checkForTriggerMatch","minLength","getDynamicOptions","groupWithOptions","dynamicOption","features","slashMenu","dynamicOptions","dynamicGroupWithOptions","concat","groups","groupsWithOptions","groupWithOption","push","map","group","filteredOptions","options","filter","optionTitle","RegExp","exec","keywords","some","keyword","dynamicOptionGroups","dynamicGroup","find","onSelectOption","selectedOption","nodeToRemove","closeMenu","matchingString","update","remove","onSelect","Fragment","menuRenderFn","anchorElementRef","selectOptionAndCleanUp","selectedOptionKey","setSelectedOptionKey","current","createPortal","div","groupTitle","oi","index","onQueryChange","triggerFn"],"mappings":"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"}
@@ -30,4 +30,4 @@ import { PUNCTUATION } from './LexicalTypeaheadMenuPlugin/index.js';
30
30
  ]);
31
31
  }
32
32
 
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L3VzZU1lbnVUcmlnZ2VyTWF0Y2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMZXhpY2FsRWRpdG9yIH0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgUFVOQ1RVQVRJT04gfSBmcm9tICcuL0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL2luZGV4LmpzJ1xuXG5leHBvcnQgdHlwZSBUcmlnZ2VyRm4gPSAoe1xuICBlZGl0b3IsXG4gIHF1ZXJ5LFxufToge1xuICBlZGl0b3I6IExleGljYWxFZGl0b3JcbiAgLyoqIFRoZSBxdWVyeSBzdHJpbmcgaXMgdGhlIFBPVEVOVElBTCB0cmlnZ2VyIEFORCB0aGUgdGV4dCBhZnRlciB0aGUgdHJpZ2dlciB0ZXh0LiAqL1xuICBxdWVyeTogc3RyaW5nXG59KSA9PiBNZW51VGV4dE1hdGNoIHwgbnVsbFxuXG5leHBvcnQgdHlwZSBNZW51VGV4dE1hdGNoID0ge1xuICBsZWFkT2Zmc2V0OiBudW1iZXJcbiAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZ1xuICByZXBsYWNlYWJsZVN0cmluZzogc3RyaW5nXG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBpZiB0aGUgdHJpZ2dlciAoZS5nLiAnLycpIGlzIHByZXNlbnQgaW4gdGhlIHF1ZXJ5IGFuZCwgaWYgc28sIHJldHVybnMgdGhlIG1hdGNoaW5nIHN0cmluZyAodGV4dCBhZnRlciB0aGUgdHJpZ2dlcilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbnVUcmlnZ2VyTWF0Y2goXG4gIC8qKlxuICAgKiBUZXh0IHdoaWNoIHRyaWdnZXJzIHRoZSBtZW51LiBFdmVyeXRoaW5nIGFmdGVyIHRoaXMgdGV4dCB3aWxsIGJlIHVzZWQgYXMgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgdHJpZ2dlcjogc3RyaW5nLFxuICB7IG1heExlbmd0aCA9IDc1LCBtaW5MZW5ndGggPSAxIH06IHsgbWF4TGVuZ3RoPzogbnVtYmVyOyBtaW5MZW5ndGg/OiBudW1iZXIgfSxcbik6IFRyaWdnZXJGbiB7XG4gIHJldHVybiB1c2VDYWxsYmFjayhcbiAgICAoeyBxdWVyeSB9KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZENoYXJzID0gJ1teJyArIHRyaWdnZXIgKyBQVU5DVFVBVElPTiArICdcXFxcc10nXG4gICAgICBjb25zdCBUeXBlYWhlYWRUcmlnZ2VyUmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAnKF58XFxcXHN8XFxcXCgpKCcgK1xuICAgICAgICAgICdbJyArXG4gICAgICAgICAgdHJpZ2dlciArXG4gICAgICAgICAgJ10nICtcbiAgICAgICAgICAnKCg/OicgK1xuICAgICAgICAgIHZhbGlkQ2hhcnMgK1xuICAgICAgICAgICcpezAsJyArXG4gICAgICAgICAgbWF4TGVuZ3RoICtcbiAgICAgICAgICAnfSknICtcbiAgICAgICAgICAnKSQnLFxuICAgICAgKVxuICAgICAgY29uc3QgbWF0Y2ggPSBUeXBlYWhlYWRUcmlnZ2VyUmVnZXguZXhlYyhxdWVyeSlcbiAgICAgIGlmIChtYXRjaCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtYXliZUxlYWRpbmdXaGl0ZXNwYWNlID0gbWF0Y2hbMV1cblxuICAgICAgICAvKipcbiAgICAgICAgICogbWF0Y2hpbmdTdHJpbmcgaXMgb25seSB0aGUgdGV4dCBBRlRFUiB0aGUgdHJpZ2dlciB0ZXh0LiAoU28gZXZlcnl0aGluZyBhZnRlciB0aGUgLylcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nU3RyaW5nID0gbWF0Y2hbM11cblxuICAgICAgICBpZiAobWF0Y2hpbmdTdHJpbmcubGVuZ3RoID49IG1pbkxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWFkT2Zmc2V0OiBtYXRjaC5pbmRleCArIG1heWJlTGVhZGluZ1doaXRlc3BhY2UubGVuZ3RoLFxuICAgICAgICAgICAgbWF0Y2hpbmdTdHJpbmcsXG4gICAgICAgICAgICByZXBsYWNlYWJsZVN0cmluZzogbWF0Y2hbMl0sIC8vIHJlcGxhY2VhYmxlU3RyaW5nIGlzIHRoZSB0cmlnZ2VyIHRleHQgKyB0aGUgbWF0Y2hpbmcgc3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgW21heExlbmd0aCwgbWluTGVuZ3RoLCB0cmlnZ2VyXSxcbiAgKVxufVxuIl0sIm5hbWVzIjpbInVzZUNhbGxiYWNrIiwiUFVOQ1RVQVRJT04iLCJ1c2VNZW51VHJpZ2dlck1hdGNoIiwidHJpZ2dlciIsIm1heExlbmd0aCIsIm1pbkxlbmd0aCIsInF1ZXJ5IiwidmFsaWRDaGFycyIsIlR5cGVhaGVhZFRyaWdnZXJSZWdleCIsIlJlZ0V4cCIsIm1hdGNoIiwiZXhlYyIsIm1heWJlTGVhZGluZ1doaXRlc3BhY2UiLCJtYXRjaGluZ1N0cmluZyIsImxlbmd0aCIsImxlYWRPZmZzZXQiLCJpbmRleCIsInJlcGxhY2VhYmxlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxXQUFXLFFBQVEsUUFBTztBQUVuQyxTQUFTQyxXQUFXLFFBQVEsd0NBQXVDO0FBaUJuRTs7Q0FFQyxHQUNELE9BQU8sU0FBU0Msb0JBQ2Q7O0dBRUMsR0FDREMsT0FBZSxFQUNmLEVBQUVDLFlBQVksRUFBRSxFQUFFQyxZQUFZLENBQUMsRUFBOEM7SUFFN0UsT0FBT0wsWUFDTCxDQUFDLEVBQUVNLEtBQUssRUFBRTtRQUNSLE1BQU1DLGFBQWEsT0FBT0osVUFBVUYsY0FBYztRQUNsRCxNQUFNTyx3QkFBd0IsSUFBSUMsT0FDaEMsaUJBQ0UsTUFDQU4sVUFDQSxNQUNBLFNBQ0FJLGFBQ0EsU0FDQUgsWUFDQSxPQUNBO1FBRUosTUFBTU0sUUFBUUYsc0JBQXNCRyxJQUFJLENBQUNMO1FBQ3pDLElBQUlJLFVBQVUsTUFBTTtZQUNsQixNQUFNRSx5QkFBeUJGLEtBQUssQ0FBQyxFQUFFO1lBRXZDOztTQUVDLEdBQ0QsTUFBTUcsaUJBQWlCSCxLQUFLLENBQUMsRUFBRTtZQUUvQixJQUFJRyxlQUFlQyxNQUFNLElBQUlULFdBQVc7Z0JBQ3RDLE9BQU87b0JBQ0xVLFlBQVlMLE1BQU1NLEtBQUssR0FBR0osdUJBQXVCRSxNQUFNO29CQUN2REQ7b0JBQ0FJLG1CQUFtQlAsS0FBSyxDQUFDLEVBQUU7Z0JBQzdCO1lBQ0Y7UUFDRjtRQUNBLE9BQU87SUFDVCxHQUNBO1FBQUNOO1FBQVdDO1FBQVdGO0tBQVE7QUFFbkMifQ==
33
+ //# sourceMappingURL=useMenuTriggerMatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.ts"],"sourcesContent":["import type { LexicalEditor } from 'lexical'\n\nimport { useCallback } from 'react'\n\nimport { PUNCTUATION } from './LexicalTypeaheadMenuPlugin/index.js'\n\nexport type TriggerFn = ({\n editor,\n query,\n}: {\n editor: LexicalEditor\n /** The query string is the POTENTIAL trigger AND the text after the trigger text. */\n query: string\n}) => MenuTextMatch | null\n\nexport type MenuTextMatch = {\n leadOffset: number\n matchingString: string\n replaceableString: string\n}\n\n/**\n * Returns a function which checks if the trigger (e.g. '/') is present in the query and, if so, returns the matching string (text after the trigger)\n */\nexport function useMenuTriggerMatch(\n /**\n * Text which triggers the menu. Everything after this text will be used as the query.\n */\n trigger: string,\n { maxLength = 75, minLength = 1 }: { maxLength?: number; minLength?: number },\n): TriggerFn {\n return useCallback(\n ({ query }) => {\n const validChars = '[^' + trigger + PUNCTUATION + '\\\\s]'\n const TypeaheadTriggerRegex = new RegExp(\n '(^|\\\\s|\\\\()(' +\n '[' +\n trigger +\n ']' +\n '((?:' +\n validChars +\n '){0,' +\n maxLength +\n '})' +\n ')$',\n )\n const match = TypeaheadTriggerRegex.exec(query)\n if (match !== null) {\n const maybeLeadingWhitespace = match[1]\n\n /**\n * matchingString is only the text AFTER the trigger text. (So everything after the /)\n */\n const matchingString = match[3]\n\n if (matchingString.length >= minLength) {\n return {\n leadOffset: match.index + maybeLeadingWhitespace.length,\n matchingString,\n replaceableString: match[2], // replaceableString is the trigger text + the matching string\n }\n }\n }\n return null\n },\n [maxLength, minLength, trigger],\n )\n}\n"],"names":["useCallback","PUNCTUATION","useMenuTriggerMatch","trigger","maxLength","minLength","query","validChars","TypeaheadTriggerRegex","RegExp","match","exec","maybeLeadingWhitespace","matchingString","length","leadOffset","index","replaceableString"],"mappings":"AAEA,SAASA,WAAW,QAAQ,QAAO;AAEnC,SAASC,WAAW,QAAQ,wCAAuC;AAiBnE;;CAEC,GACD,OAAO,SAASC,oBACd;;GAEC,GACDC,OAAe,EACf,EAAEC,YAAY,EAAE,EAAEC,YAAY,CAAC,EAA8C;IAE7E,OAAOL,YACL,CAAC,EAAEM,KAAK,EAAE;QACR,MAAMC,aAAa,OAAOJ,UAAUF,cAAc;QAClD,MAAMO,wBAAwB,IAAIC,OAChC,iBACE,MACAN,UACA,MACA,SACAI,aACA,SACAH,YACA,OACA;QAEJ,MAAMM,QAAQF,sBAAsBG,IAAI,CAACL;QACzC,IAAII,UAAU,MAAM;YAClB,MAAME,yBAAyBF,KAAK,CAAC,EAAE;YAEvC;;SAEC,GACD,MAAMG,iBAAiBH,KAAK,CAAC,EAAE;YAE/B,IAAIG,eAAeC,MAAM,IAAIT,WAAW;gBACtC,OAAO;oBACLU,YAAYL,MAAMM,KAAK,GAAGJ,uBAAuBE,MAAM;oBACvDD;oBACAI,mBAAmBP,KAAK,CAAC,EAAE;gBAC7B;YACF;QACF;QACA,OAAO;IACT,GACA;QAACN;QAAWC;QAAWF;KAAQ;AAEnC"}
@@ -233,4 +233,4 @@ export function AddBlockHandlePlugin({ anchorElem = document.body }) {
233
233
  return useAddBlockHandle(editor, anchorElem, editor._editable);
234
234
  }
235
235
 
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9BZGRCbG9ja0hhbmRsZVBsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IsIExleGljYWxOb2RlLCBQYXJhZ3JhcGhOb2RlIH0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IGxleGljYWxDb21wb3NlckNvbnRleHRJbXBvcnQgZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dC5qcydcbmNvbnN0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9ID0gbGV4aWNhbENvbXBvc2VyQ29udGV4dEltcG9ydFxuaW1wb3J0IGxleGljYWxJbXBvcnQgZnJvbSAnbGV4aWNhbCdcbmNvbnN0IHsgJGNyZWF0ZVBhcmFncmFwaE5vZGUsICRnZXROb2RlQnlLZXkgfSA9IGxleGljYWxJbXBvcnRcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ndWFyZC5qcydcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcG9pbnQuanMnXG5pbXBvcnQgeyBSZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVjdC5qcydcbmltcG9ydCB7IEVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQgfSBmcm9tICcuLi8uLi9TbGFzaE1lbnUvTGV4aWNhbFR5cGVhaGVhZE1lbnVQbHVnaW4vaW5kZXguanMnXG5pbXBvcnQgeyBnZXRDb2xsYXBzZWRNYXJnaW5zIH0gZnJvbSAnLi4vdXRpbHMvZ2V0Q29sbGFwc2VkTWFyZ2lucy5qcydcbmltcG9ydCB7IGdldFRvcExldmVsTm9kZUtleXMgfSBmcm9tICcuLi91dGlscy9nZXRUb3BMZXZlbE5vZGVLZXlzLmpzJ1xuaW1wb3J0IHsgaXNPbkhhbmRsZUVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9pc09uSGFuZGxlRWxlbWVudC5qcydcbmltcG9ydCB7IHNldEhhbmRsZVBvc2l0aW9uIH0gZnJvbSAnLi4vdXRpbHMvc2V0SGFuZGxlUG9zaXRpb24uanMnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgU1BBQ0UgPSAtMjRcbmNvbnN0IEFERF9CTE9DS19NRU5VX0NMQVNTTkFNRSA9ICdhZGQtYmxvY2stbWVudSdcblxuY29uc3QgRG93bndhcmQgPSAxXG5jb25zdCBVcHdhcmQgPSAtMVxuY29uc3QgSW5kZXRlcm1pbmF0ZSA9IDBcblxubGV0IHByZXZJbmRleCA9IEluZmluaXR5XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRJbmRleChrZXlzTGVuZ3RoOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoa2V5c0xlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBJbmZpbml0eVxuICB9XG4gIGlmIChwcmV2SW5kZXggPj0gMCAmJiBwcmV2SW5kZXggPCBrZXlzTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHByZXZJbmRleFxuICB9XG5cbiAgcmV0dXJuIE1hdGguZmxvb3Ioa2V5c0xlbmd0aCAvIDIpXG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrRWxlbWVudChcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvcixcbiAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gIHVzZUVkZ2VBc0RlZmF1bHQgPSBmYWxzZSxcbiAgaG9yaXpvbnRhbE9mZnNldCA9IDAsXG4pOiB7XG4gIGJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsXG4gIGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsXG59IHtcbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlY3QgPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICBsZXQgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGxldCBibG9ja05vZGU6IExleGljYWxOb2RlIHwgbnVsbCA9IG51bGxcblxuICAvLyBSZXR1cm4gbnVsbCBpZiBtYXRjaGluZyBibG9jayBlbGVtZW50IGlzIHRoZSBmaXJzdCBvciBsYXN0IG5vZGVcbiAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgaWYgKHVzZUVkZ2VBc0RlZmF1bHQpIHtcbiAgICAgIGNvbnN0IFtmaXJzdE5vZGUsIGxhc3ROb2RlXSA9IFtcbiAgICAgICAgZWRpdG9yLmdldEVsZW1lbnRCeUtleSh0b3BMZXZlbE5vZGVLZXlzWzBdKSxcbiAgICAgICAgZWRpdG9yLmdldEVsZW1lbnRCeUtleSh0b3BMZXZlbE5vZGVLZXlzW3RvcExldmVsTm9kZUtleXMubGVuZ3RoIC0gMV0pLFxuICAgICAgXVxuXG4gICAgICBjb25zdCBbZmlyc3ROb2RlUmVjdCwgbGFzdE5vZGVSZWN0XSA9IFtcbiAgICAgICAgZmlyc3ROb2RlPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgbGFzdE5vZGU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgXVxuXG4gICAgICBpZiAoZmlyc3ROb2RlUmVjdCAmJiBsYXN0Tm9kZVJlY3QpIHtcbiAgICAgICAgaWYgKGV2ZW50LnkgPCBmaXJzdE5vZGVSZWN0LnRvcCkge1xuICAgICAgICAgIGJsb2NrRWxlbSA9IGZpcnN0Tm9kZVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnkgPiBsYXN0Tm9kZVJlY3QuYm90dG9tKSB7XG4gICAgICAgICAgYmxvY2tFbGVtID0gbGFzdE5vZGVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChibG9ja0VsZW0pIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2tFbGVtOiBudWxsLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudFxuICAgIGxldCBpbmRleCA9IGdldEN1cnJlbnRJbmRleCh0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aClcbiAgICBsZXQgZGlyZWN0aW9uID0gSW5kZXRlcm1pbmF0ZVxuXG4gICAgd2hpbGUgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCkge1xuICAgICAgY29uc3Qga2V5ID0gdG9wTGV2ZWxOb2RlS2V5c1tpbmRleF1cbiAgICAgIGNvbnN0IGVsZW0gPSBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KGtleSlcbiAgICAgIGlmIChlbGVtID09PSBudWxsKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjb25zdCBwb2ludCA9IG5ldyBQb2ludChldmVudC54ICsgaG9yaXpvbnRhbE9mZnNldCwgZXZlbnQueSlcbiAgICAgIGNvbnN0IGRvbVJlY3QgPSBSZWN0LmZyb21ET00oZWxlbSlcbiAgICAgIGNvbnN0IHsgbWFyZ2luQm90dG9tLCBtYXJnaW5Ub3AgfSA9IGdldENvbGxhcHNlZE1hcmdpbnMoZWxlbSlcblxuICAgICAgY29uc3QgcmVjdCA9IGRvbVJlY3QuZ2VuZXJhdGVOZXdSZWN0KHtcbiAgICAgICAgYm90dG9tOiBkb21SZWN0LmJvdHRvbSArIG1hcmdpbkJvdHRvbSxcbiAgICAgICAgbGVmdDogYW5jaG9yRWxlbWVudFJlY3QubGVmdCxcbiAgICAgICAgcmlnaHQ6IGFuY2hvckVsZW1lbnRSZWN0LnJpZ2h0LFxuICAgICAgICB0b3A6IGRvbVJlY3QudG9wIC0gbWFyZ2luVG9wLFxuICAgICAgfSlcblxuICAgICAgY29uc3Qge1xuICAgICAgICByZWFzb246IHsgaXNPbkJvdHRvbVNpZGUsIGlzT25Ub3BTaWRlIH0sXG4gICAgICAgIHJlc3VsdCxcbiAgICAgIH0gPSByZWN0LmNvbnRhaW5zKHBvaW50KVxuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGJsb2NrRWxlbSA9IGVsZW1cbiAgICAgICAgYmxvY2tOb2RlID0gJGdldE5vZGVCeUtleShrZXkpXG4gICAgICAgIHByZXZJbmRleCA9IGluZGV4XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09IEluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgaWYgKGlzT25Ub3BTaWRlKSB7XG4gICAgICAgICAgZGlyZWN0aW9uID0gVXB3YXJkXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPbkJvdHRvbVNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBEb3dud2FyZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHN0b3Agc2VhcmNoIGJsb2NrIGVsZW1lbnRcbiAgICAgICAgICBkaXJlY3Rpb24gPSBJbmZpbml0eVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluZGV4ICs9IGRpcmVjdGlvblxuICAgIH1cbiAgfSlcblxuICByZXR1cm4ge1xuICAgIGJsb2NrRWxlbSxcbiAgICBibG9ja05vZGUsXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlQWRkQmxvY2tIYW5kbGUoXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvcixcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4gIGlzRWRpdGFibGU6IGJvb2xlYW4sXG4pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IHNjcm9sbGVyRWxlbSA9IGFuY2hvckVsZW0ucGFyZW50RWxlbWVudFxuXG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtob3ZlcmVkRWxlbWVudCwgc2V0SG92ZXJlZEVsZW1lbnRdID0gdXNlU3RhdGU8e1xuICAgIGVsZW06IEhUTUxFbGVtZW50XG4gICAgbm9kZTogTGV4aWNhbE5vZGVcbiAgfSB8IG51bGw+KG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBvbkRvY3VtZW50TW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXRcbiAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gMFxuICAgICAgLy8gQ2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4gc2Nyb2xsZXJFbGVtIGFuZCB0YXJnZXQgaWYgdGFyZ2V0IGlzIG5vdCBpbiBzY3JvbGxlckVsZW1cbiAgICAgIGlmIChzY3JvbGxlckVsZW0gJiYgIXNjcm9sbGVyRWxlbS5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIGNvbnN0IHsgYm90dG9tLCBsZWZ0LCByaWdodCwgdG9wIH0gPSBzY3JvbGxlckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgY29uc3QgeyBwYWdlWCwgcGFnZVkgfSA9IGV2ZW50XG4gICAgICAgIGNvbnN0IGhvcml6b250YWxCdWZmZXIgPSA1MFxuICAgICAgICBjb25zdCB2ZXJ0aWNhbEJ1ZmZlciA9IDI1XG4gICAgICAgIGNvbnN0IGFkanVzdGVkVG9wID0gdG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRCb3R0b20gPSBib3R0b20gKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYWdlWSA8IGFkanVzdGVkVG9wIC0gdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWSA+IGFkanVzdGVkQm90dG9tICsgdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA8IGxlZnQgLSBob3Jpem9udGFsQnVmZmVyIHx8XG4gICAgICAgICAgcGFnZVggPiByaWdodCArIGhvcml6b250YWxCdWZmZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2V0SG92ZXJlZEVsZW1lbnQobnVsbClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgaXMgdXNlZCB0byBhbGxvdyB0aGUgX2VtcHR5QmxvY2tFbGVtIHRvIGJlIGZvdW5kIHdoZW4gdGhlIG1vdXNlIGlzIGluIHRoZVxuICAgICAgICAvLyBidWZmZXIgem9uZSBhcm91bmQgdGhlIHNjcm9sbGVyRWxlbS5cbiAgICAgICAgaWYgKHBhZ2VYIDwgbGVmdCB8fCBwYWdlWCA+IHJpZ2h0KSB7XG4gICAgICAgICAgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gcGFnZVggPCBsZWZ0ID8gcGFnZVggLSBsZWZ0IDogcGFnZVggLSByaWdodFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpc09uSGFuZGxlRWxlbWVudCh0YXJnZXQsIEFERF9CTE9DS19NRU5VX0NMQVNTTkFNRSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCB7IGJsb2NrRWxlbTogX2VtcHR5QmxvY2tFbGVtLCBibG9ja05vZGUgfSA9IGdldEJsb2NrRWxlbWVudChcbiAgICAgICAgYW5jaG9yRWxlbSxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBldmVudCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIC1kaXN0YW5jZUZyb21TY3JvbGxlckVsZW0sXG4gICAgICApXG4gICAgICBpZiAoIV9lbXB0eUJsb2NrRWxlbSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHNldEhvdmVyZWRFbGVtZW50KHtcbiAgICAgICAgZWxlbTogX2VtcHR5QmxvY2tFbGVtLFxuICAgICAgICBub2RlOiBibG9ja05vZGUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFNpbmNlIHRoZSBkcmFnZ2FibGVCbG9ja0VsZW0gaXMgb3V0c2lkZSB0aGUgYWN0dWFsIGVkaXRvciwgd2UgbmVlZCB0byBsaXN0ZW4gdG8gdGhlIGRvY3VtZW50XG4gICAgLy8gdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lkZSB0aGUgZWRpdG9yIGFuZCByZXNwZWN0IGEgYnVmZmVyIGFyb3VuZFxuICAgIC8vIHRoZSBzY3JvbGxlckVsZW0gdG8gYXZvaWQgdGhlIGRyYWdnYWJsZUJsb2NrRWxlbSBkaXNhcHBlYXJpbmcgdG9vIGVhcmx5LlxuICAgIGRvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbkRvY3VtZW50TW91c2VNb3ZlKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbkRvY3VtZW50TW91c2VNb3ZlKVxuICAgIH1cbiAgfSwgW3Njcm9sbGVyRWxlbSwgYW5jaG9yRWxlbSwgZWRpdG9yXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZW51UmVmLmN1cnJlbnQgJiYgaG92ZXJlZEVsZW1lbnQ/Lm5vZGUpIHtcbiAgICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiBibG9ja05vZGUgaXMgYW4gZW1wdHkgdGV4dCBub2RlXG4gICAgICAgIGxldCBpc0VtcHR5UGFyYWdyYXBoID0gdHJ1ZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQubm9kZS5nZXRUeXBlKCkgIT09ICdwYXJhZ3JhcGgnIHx8XG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQubm9kZS5nZXRUZXh0Q29udGVudCgpICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpc0VtcHR5UGFyYWdyYXBoID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEhhbmRsZVBvc2l0aW9uKFxuICAgICAgICAgIGhvdmVyZWRFbGVtZW50Py5lbGVtLFxuICAgICAgICAgIG1lbnVSZWYuY3VycmVudCxcbiAgICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICAgIGlzRW1wdHlQYXJhZ3JhcGggPyBTUEFDRSA6IFNQQUNFIC0gMjAsXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbYW5jaG9yRWxlbSwgaG92ZXJlZEVsZW1lbnQsIGVkaXRvcl0pXG5cbiAgY29uc3QgaGFuZGxlQWRkQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIGxldCBob3ZlcmVkRWxlbWVudFRvVXNlID0gaG92ZXJlZEVsZW1lbnRcbiAgICAgIGlmICghaG92ZXJlZEVsZW1lbnRUb1VzZT8ubm9kZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gMS4gVXBkYXRlIGhvdmVyZWRFbGVtZW50Lm5vZGUgdG8gYSBuZXcgcGFyYWdyYXBoIG5vZGUgaWYgdGhlIGhvdmVyZWRFbGVtZW50Lm5vZGUgaXMgbm90IGEgcGFyYWdyYXBoIG5vZGVcbiAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiBibG9ja05vZGUgaXMgYW4gZW1wdHkgdGV4dCBub2RlXG4gICAgICAgIGxldCBpc0VtcHR5UGFyYWdyYXBoID0gdHJ1ZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnRUb1VzZS5ub2RlLmdldFR5cGUoKSAhPT0gJ3BhcmFncmFwaCcgfHxcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuZ2V0VGV4dENvbnRlbnQoKSAhPT0gJydcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXNFbXB0eVBhcmFncmFwaCA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzRW1wdHlQYXJhZ3JhcGgpIHtcbiAgICAgICAgICBjb25zdCBuZXdQYXJhZ3JhcGggPSAkY3JlYXRlUGFyYWdyYXBoTm9kZSgpXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnRUb1VzZS5ub2RlLmluc2VydEFmdGVyKG5ld1BhcmFncmFwaClcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaG92ZXJlZEVsZW1lbnRUb1VzZSA9IHtcbiAgICAgICAgICAgICAgZWxlbTogZWRpdG9yLmdldEVsZW1lbnRCeUtleShuZXdQYXJhZ3JhcGguZ2V0S2V5KCkpLFxuICAgICAgICAgICAgICBub2RlOiBuZXdQYXJhZ3JhcGgsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRIb3ZlcmVkRWxlbWVudChob3ZlcmVkRWxlbWVudFRvVXNlKVxuICAgICAgICAgIH0sIDApXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIDIuIEZvY3VzIG9uIHRoZSBuZXcgcGFyYWdyYXBoIG5vZGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgICAgICBlZGl0b3IuZm9jdXMoKVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaG92ZXJlZEVsZW1lbnRUb1VzZS5ub2RlICYmXG4gICAgICAgICAgICAnc2VsZWN0JyBpbiBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgJiZcbiAgICAgICAgICAgIHR5cGVvZiBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuc2VsZWN0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuc2VsZWN0KClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9LCAxKVxuXG4gICAgICAvLyBNYWtlIHN1cmUgdGhpcyBpcyBjYWxsZWQgQUZURVIgdGhlIGZvY3VzaW5nIGhhcyBiZWVuIHByb2Nlc3NlZCBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIHdvbid0IHdvcmtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlZGl0b3IuZGlzcGF0Y2hDb21tYW5kKEVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQsIHtcbiAgICAgICAgICBub2RlOiBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgYXMgUGFyYWdyYXBoTm9kZSxcbiAgICAgICAgfSlcbiAgICAgIH0sIDIpXG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSxcbiAgICBbZWRpdG9yLCBob3ZlcmVkRWxlbWVudF0sXG4gIClcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3NOYW1lPVwiaWNvbiBhZGQtYmxvY2stbWVudVwiXG4gICAgICAgIG9uQ2xpY2s9eyhldmVudCkgPT4ge1xuICAgICAgICAgIGhhbmRsZUFkZENsaWNrKGV2ZW50KVxuICAgICAgICB9fVxuICAgICAgICByZWY9e21lbnVSZWZ9XG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNFZGl0YWJsZSA/ICdpY29uJyA6ICcnfSAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9SZWFjdC5GcmFnbWVudD4sXG4gICAgYW5jaG9yRWxlbSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQWRkQmxvY2tIYW5kbGVQbHVnaW4oe1xuICBhbmNob3JFbGVtID0gZG9jdW1lbnQuYm9keSxcbn06IHtcbiAgYW5jaG9yRWxlbT86IEhUTUxFbGVtZW50XG59KTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlQWRkQmxvY2tIYW5kbGUoZWRpdG9yLCBhbmNob3JFbGVtLCBlZGl0b3IuX2VkaXRhYmxlKVxufVxuIl0sIm5hbWVzIjpbImxleGljYWxDb21wb3NlckNvbnRleHRJbXBvcnQiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwibGV4aWNhbEltcG9ydCIsIiRjcmVhdGVQYXJhZ3JhcGhOb2RlIiwiJGdldE5vZGVCeUtleSIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsImlzSFRNTEVsZW1lbnQiLCJQb2ludCIsIlJlY3QiLCJFTkFCTEVfU0xBU0hfTUVOVV9DT01NQU5EIiwiZ2V0Q29sbGFwc2VkTWFyZ2lucyIsImdldFRvcExldmVsTm9kZUtleXMiLCJpc09uSGFuZGxlRWxlbWVudCIsInNldEhhbmRsZVBvc2l0aW9uIiwiU1BBQ0UiLCJBRERfQkxPQ0tfTUVOVV9DTEFTU05BTUUiLCJEb3dud2FyZCIsIlVwd2FyZCIsIkluZGV0ZXJtaW5hdGUiLCJwcmV2SW5kZXgiLCJJbmZpbml0eSIsImdldEN1cnJlbnRJbmRleCIsImtleXNMZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJnZXRCbG9ja0VsZW1lbnQiLCJhbmNob3JFbGVtIiwiZWRpdG9yIiwiZXZlbnQiLCJ1c2VFZGdlQXNEZWZhdWx0IiwiaG9yaXpvbnRhbE9mZnNldCIsImFuY2hvckVsZW1lbnRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wTGV2ZWxOb2RlS2V5cyIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsImZpcnN0Tm9kZSIsImxhc3ROb2RlIiwiZ2V0RWxlbWVudEJ5S2V5IiwibGVuZ3RoIiwiZmlyc3ROb2RlUmVjdCIsImxhc3ROb2RlUmVjdCIsInkiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJwb2ludCIsIngiLCJkb21SZWN0IiwiZnJvbURPTSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsInJlY3QiLCJnZW5lcmF0ZU5ld1JlY3QiLCJsZWZ0IiwicmlnaHQiLCJyZWFzb24iLCJpc09uQm90dG9tU2lkZSIsImlzT25Ub3BTaWRlIiwicmVzdWx0IiwiY29udGFpbnMiLCJ1c2VBZGRCbG9ja0hhbmRsZSIsImlzRWRpdGFibGUiLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwibWVudVJlZiIsImhvdmVyZWRFbGVtZW50Iiwic2V0SG92ZXJlZEVsZW1lbnQiLCJvbkRvY3VtZW50TW91c2VNb3ZlIiwidGFyZ2V0IiwiZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwicGFnZVgiLCJwYWdlWSIsImhvcml6b250YWxCdWZmZXIiLCJ2ZXJ0aWNhbEJ1ZmZlciIsImFkanVzdGVkVG9wIiwid2luZG93Iiwic2Nyb2xsWSIsImFkanVzdGVkQm90dG9tIiwiX2VtcHR5QmxvY2tFbGVtIiwibm9kZSIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjdXJyZW50IiwiaXNFbXB0eVBhcmFncmFwaCIsImdldFR5cGUiLCJnZXRUZXh0Q29udGVudCIsImhhbmRsZUFkZENsaWNrIiwiaG92ZXJlZEVsZW1lbnRUb1VzZSIsInVwZGF0ZSIsIm5ld1BhcmFncmFwaCIsImluc2VydEFmdGVyIiwic2V0VGltZW91dCIsImdldEtleSIsImZvY3VzIiwic2VsZWN0IiwiZGlzcGF0Y2hDb21tYW5kIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJGcmFnbWVudCIsImJ1dHRvbiIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJyZWYiLCJ0eXBlIiwiZGl2IiwiQWRkQmxvY2tIYW5kbGVQbHVnaW4iLCJib2R5IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUdBLE9BQU9BLGtDQUFrQywyQ0FBMEM7QUFDbkYsTUFBTSxFQUFFQyx5QkFBeUIsRUFBRSxHQUFHRDtBQUN0QyxPQUFPRSxtQkFBbUIsVUFBUztBQUNuQyxNQUFNLEVBQUVDLG9CQUFvQixFQUFFQyxhQUFhLEVBQUUsR0FBR0Y7QUFFaEQsWUFBWUcsV0FBVyxRQUFPO0FBQzlCLFNBQVNDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxRQUFPO0FBQ2hFLFNBQVNDLFlBQVksUUFB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
236
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/handles/AddBlockHandlePlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor, LexicalNode, ParagraphNode } from 'lexical'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\nimport lexicalImport from 'lexical'\nconst { $createParagraphNode, $getNodeByKey } = lexicalImport\n\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { Rect } from '../../../utils/rect.js'\nimport { ENABLE_SLASH_MENU_COMMAND } from '../../SlashMenu/LexicalTypeaheadMenuPlugin/index.js'\nimport { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport './index.scss'\n\nconst SPACE = -24\nconst ADD_BLOCK_MENU_CLASSNAME = 'add-block-menu'\n\nconst Downward = 1\nconst Upward = -1\nconst Indeterminate = 0\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction getBlockElement(\n anchorElem: HTMLElement,\n editor: LexicalEditor,\n event: MouseEvent,\n useEdgeAsDefault = false,\n horizontalOffset = 0,\n): {\n blockElem: HTMLElement | null\n blockNode: LexicalNode | null\n} {\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n let blockElem: HTMLElement | null = null\n let blockNode: LexicalNode | null = null\n\n // Return null if matching block element is the first or last node\n editor.getEditorState().read(() => {\n if (useEdgeAsDefault) {\n const [firstNode, lastNode] = [\n editor.getElementByKey(topLevelNodeKeys[0]),\n editor.getElementByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1]),\n ]\n\n const [firstNodeRect, lastNodeRect] = [\n firstNode?.getBoundingClientRect(),\n lastNode?.getBoundingClientRect(),\n ]\n\n if (firstNodeRect && lastNodeRect) {\n if (event.y < firstNodeRect.top) {\n blockElem = firstNode\n } else if (event.y > lastNodeRect.bottom) {\n blockElem = lastNode\n }\n\n if (blockElem) {\n return {\n blockElem: null,\n }\n }\n }\n }\n\n // Find matching block element\n let index = getCurrentIndex(topLevelNodeKeys.length)\n let direction = Indeterminate\n\n while (index >= 0 && index < topLevelNodeKeys.length) {\n const key = topLevelNodeKeys[index]\n const elem = editor.getElementByKey(key)\n if (elem === null) {\n break\n }\n const point = new Point(event.x + horizontalOffset, event.y)\n const domRect = Rect.fromDOM(elem)\n const { marginBottom, marginTop } = getCollapsedMargins(elem)\n\n const rect = domRect.generateNewRect({\n bottom: domRect.bottom + marginBottom,\n left: anchorElementRect.left,\n right: anchorElementRect.right,\n top: domRect.top - marginTop,\n })\n\n const {\n reason: { isOnBottomSide, isOnTopSide },\n result,\n } = rect.contains(point)\n\n if (result) {\n blockElem = elem\n blockNode = $getNodeByKey(key)\n prevIndex = index\n break\n }\n\n if (direction === Indeterminate) {\n if (isOnTopSide) {\n direction = Upward\n } else if (isOnBottomSide) {\n direction = Downward\n } else {\n // stop search block element\n direction = Infinity\n }\n }\n\n index += direction\n }\n })\n\n return {\n blockElem,\n blockNode,\n }\n}\n\nfunction useAddBlockHandle(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): JSX.Element {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLButtonElement>(null)\n const [hoveredElement, setHoveredElement] = useState<{\n elem: HTMLElement\n node: LexicalNode\n } | null>(null)\n\n useEffect(() => {\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n let distanceFromScrollerElem = 0\n // Calculate distance between scrollerElem and target if target is not in scrollerElem\n if (scrollerElem && !scrollerElem.contains(target)) {\n const { bottom, left, right, top } = scrollerElem.getBoundingClientRect()\n const { pageX, pageY } = event\n const horizontalBuffer = 50\n const verticalBuffer = 25\n const adjustedTop = top + window.scrollY\n const adjustedBottom = bottom + window.scrollY\n\n if (\n pageY < adjustedTop - verticalBuffer ||\n pageY > adjustedBottom + verticalBuffer ||\n pageX < left - horizontalBuffer ||\n pageX > right + horizontalBuffer\n ) {\n setHoveredElement(null)\n return\n }\n\n // This is used to allow the _emptyBlockElem to be found when the mouse is in the\n // buffer zone around the scrollerElem.\n if (pageX < left || pageX > right) {\n distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right\n }\n }\n\n if (isOnHandleElement(target, ADD_BLOCK_MENU_CLASSNAME)) {\n return\n }\n const { blockElem: _emptyBlockElem, blockNode } = getBlockElement(\n anchorElem,\n editor,\n event,\n false,\n -distanceFromScrollerElem,\n )\n if (!_emptyBlockElem) {\n return\n }\n setHoveredElement({\n elem: _emptyBlockElem,\n node: blockNode,\n })\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor])\n\n useEffect(() => {\n if (menuRef.current && hoveredElement?.node) {\n editor.getEditorState().read(() => {\n // Check if blockNode is an empty text node\n let isEmptyParagraph = true\n if (\n hoveredElement.node.getType() !== 'paragraph' ||\n hoveredElement.node.getTextContent() !== ''\n ) {\n isEmptyParagraph = false\n }\n\n setHandlePosition(\n hoveredElement?.elem,\n menuRef.current,\n anchorElem,\n isEmptyParagraph ? SPACE : SPACE - 20,\n )\n })\n }\n }, [anchorElem, hoveredElement, editor])\n\n const handleAddClick = useCallback(\n (event) => {\n let hoveredElementToUse = hoveredElement\n if (!hoveredElementToUse?.node) {\n return\n }\n\n // 1. Update hoveredElement.node to a new paragraph node if the hoveredElement.node is not a paragraph node\n editor.update(() => {\n // Check if blockNode is an empty text node\n let isEmptyParagraph = true\n if (\n hoveredElementToUse.node.getType() !== 'paragraph' ||\n hoveredElementToUse.node.getTextContent() !== ''\n ) {\n isEmptyParagraph = false\n }\n\n if (!isEmptyParagraph) {\n const newParagraph = $createParagraphNode()\n hoveredElementToUse.node.insertAfter(newParagraph)\n\n setTimeout(() => {\n hoveredElementToUse = {\n elem: editor.getElementByKey(newParagraph.getKey()),\n node: newParagraph,\n }\n setHoveredElement(hoveredElementToUse)\n }, 0)\n }\n })\n\n // 2. Focus on the new paragraph node\n setTimeout(() => {\n editor.update(() => {\n editor.focus()\n\n if (\n hoveredElementToUse.node &&\n 'select' in hoveredElementToUse.node &&\n typeof hoveredElementToUse.node.select === 'function'\n ) {\n hoveredElementToUse.node.select()\n }\n })\n }, 1)\n\n // Make sure this is called AFTER the focusing has been processed by the browser\n // Otherwise, this won't work\n setTimeout(() => {\n editor.dispatchCommand(ENABLE_SLASH_MENU_COMMAND, {\n node: hoveredElementToUse.node as ParagraphNode,\n })\n }, 2)\n\n event.stopPropagation()\n event.preventDefault()\n },\n [editor, hoveredElement],\n )\n\n return createPortal(\n <React.Fragment>\n <button\n className=\"icon add-block-menu\"\n onClick={(event) => {\n handleAddClick(event)\n }}\n ref={menuRef}\n type=\"button\"\n >\n <div className={isEditable ? 'icon' : ''} />\n </button>\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function AddBlockHandlePlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n return useAddBlockHandle(editor, anchorElem, editor._editable)\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalImport","$createParagraphNode","$getNodeByKey","React","useCallback","useEffect","useRef","useState","createPortal","isHTMLElement","Point","Rect","ENABLE_SLASH_MENU_COMMAND","getCollapsedMargins","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","SPACE","ADD_BLOCK_MENU_CLASSNAME","Downward","Upward","Indeterminate","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","getBlockElement","anchorElem","editor","event","useEdgeAsDefault","horizontalOffset","anchorElementRect","getBoundingClientRect","topLevelNodeKeys","blockElem","blockNode","getEditorState","read","firstNode","lastNode","getElementByKey","length","firstNodeRect","lastNodeRect","y","top","bottom","index","direction","key","elem","point","x","domRect","fromDOM","marginBottom","marginTop","rect","generateNewRect","left","right","reason","isOnBottomSide","isOnTopSide","result","contains","useAddBlockHandle","isEditable","scrollerElem","parentElement","menuRef","hoveredElement","setHoveredElement","onDocumentMouseMove","target","distanceFromScrollerElem","pageX","pageY","horizontalBuffer","verticalBuffer","adjustedTop","window","scrollY","adjustedBottom","_emptyBlockElem","node","document","addEventListener","removeEventListener","current","isEmptyParagraph","getType","getTextContent","handleAddClick","hoveredElementToUse","update","newParagraph","insertAfter","setTimeout","getKey","focus","select","dispatchCommand","stopPropagation","preventDefault","Fragment","button","className","onClick","ref","type","div","AddBlockHandlePlugin","body","_editable"],"mappings":"AAAA;AAGA,OAAOA,kCAAkC,2CAA0C;AACnF,MAAM,EAAEC,yBAAyB,EAAE,GAAGD;AACtC,OAAOE,mBAAmB,UAAS;AACnC,MAAM,EAAEC,oBAAoB,EAAEC,aAAa,EAAE,GAAGF;AAEhD,YAAYG,WAAW,QAAO;AAC9B,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAChE,SAASC,YAAY,QAAQ,YAAW;AAExC,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,KAAK,QAAQ,0BAAyB;AAC/C,SAASC,IAAI,QAAQ,yBAAwB;AAC7C,SAASC,yBAAyB,QAAQ,sDAAqD;AAC/F,SAASC,mBAAmB,QAAQ,kCAAiC;AACrE,SAASC,mBAAmB,QAAQ,kCAAiC;AACrE,SAASC,iBAAiB,QAAQ,gCAA+B;AACjE,SAASC,iBAAiB,QAAQ,gCAA+B;AACjE,OAAO,eAAc;AAErB,MAAMC,QAAQ,CAAC;AACf,MAAMC,2BAA2B;AAEjC,MAAMC,WAAW;AACjB,MAAMC,SAAS,CAAC;AAChB,MAAMC,gBAAgB;AAEtB,IAAIC,YAAYC;AAEhB,SAASC,gBAAgBC,UAAkB;IACzC,IAAIA,eAAe,GAAG;QACpB,OAAOF;IACT;IACA,IAAID,aAAa,KAAKA,YAAYG,YAAY;QAC5C,OAAOH;IACT;IAEA,OAAOI,KAAKC,KAAK,CAACF,aAAa;AACjC;AAEA,SAASG,gBACPC,UAAuB,EACvBC,MAAqB,EACrBC,KAAiB,EACjBC,mBAAmB,KAAK,EACxBC,mBAAmB,CAAC;IAKpB,MAAMC,oBAAoBL,WAAWM,qBAAqB;IAC1D,MAAMC,mBAAmBtB,oBAAoBgB;IAE7C,IAAIO,YAAgC;IACpC,IAAIC,YAAgC;IAEpC,kEAAkE;IAClER,OAAOS,cAAc,GAAGC,IAAI,CAAC;QAC3B,IAAIR,kBAAkB;YACpB,MAAM,CAACS,WAAWC,SAAS,GAAG;gBAC5BZ,OAAOa,eAAe,CAACP,gBAAgB,CAAC,EAAE;gBAC1CN,OAAOa,eAAe,CAACP,gBAAgB,CAACA,iBAAiBQ,MAAM,GAAG,EAAE;aACrE;YAED,MAAM,CAACC,eAAeC,aAAa,GAAG;gBACpCL,WAAWN;gBACXO,UAAUP;aACX;YAED,IAAIU,iBAAiBC,cAAc;gBACjC,IAAIf,MAAMgB,CAAC,GAAGF,cAAcG,GAAG,EAAE;oBAC/BX,YAAYI;gBACd,OAAO,IAAIV,MAAMgB,CAAC,GAAGD,aAAaG,MAAM,EAAE;oBACxCZ,YAAYK;gBACd;gBAEA,IAAIL,WAAW;oBACb,OAAO;wBACLA,WAAW;oBACb;gBACF;YACF;QACF;QAEA,8BAA8B;QAC9B,IAAIa,QAAQ1B,gBAAgBY,iBAAiBQ,MAAM;QACnD,IAAIO,YAAY9B;QAEhB,MAAO6B,SAAS,KAAKA,QAAQd,iBAAiBQ,MAAM,CAAE;YACpD,MAAMQ,MAAMhB,gBAAgB,CAACc,MAAM;YACnC,MAAMG,OAAOvB,OAAOa,eAAe,CAACS;YACpC,IAAIC,SAAS,MAAM;gBACjB;YACF;YACA,MAAMC,QAAQ,IAAI5C,MAAMqB,MAAMwB,CAAC,GAAGtB,kBAAkBF,MAAMgB,CAAC;YAC3D,MAAMS,UAAU7C,KAAK8C,OAAO,CAACJ;YAC7B,MAAM,EAAEK,YAAY,EAAEC,SAAS,EAAE,GAAG9C,oBAAoBwC;YAExD,MAAMO,OAAOJ,QAAQK,eAAe,CAAC;gBACnCZ,QAAQO,QAAQP,MAAM,GAAGS;gBACzBI,MAAM5B,kBAAkB4B,IAAI;gBAC5BC,OAAO7B,kBAAkB6B,KAAK;gBAC9Bf,KAAKQ,QAAQR,GAAG,GAAGW;YACrB;YAEA,MAAM,EACJK,QAAQ,EAAEC,cAAc,EAAEC,WAAW,EAAE,EACvCC,MAAM,EACP,GAAGP,KAAKQ,QAAQ,CAACd;YAElB,IAAIa,QAAQ;gBACV9B,YAAYgB;gBACZf,YAAYpC,cAAckD;gBAC1B9B,YAAY4B;gBACZ;YACF;YAEA,IAAIC,cAAc9B,eAAe;gBAC/B,IAAI6C,aAAa;oBACff,YAAY/B;gBACd,OAAO,IAAI6C,gBAAgB;oBACzBd,YAAYhC;gBACd,OAAO;oBACL,4BAA4B;oBAC5BgC,YAAY5B;gBACd;YACF;YAEA2B,SAASC;QACX;IACF;IAEA,OAAO;QACLd;QACAC;IACF;AACF;AAEA,SAAS+B,kBACPvC,MAAqB,EACrBD,UAAuB,EACvByC,UAAmB;IAEnB,MAAMC,eAAe1C,WAAW2C,aAAa;IAE7C,MAAMC,UAAUnE,OAA0B;IAC1C,MAAM,CAACoE,gBAAgBC,kBAAkB,GAAGpE,SAGlC;IAEVF,UAAU;QACR,SAASuE,oBAAoB7C,KAAiB;YAC5C,MAAM8C,SAAS9C,MAAM8C,MAAM;YAC3B,IAAI,CAACpE,cAAcoE,SAAS;gBAC1B;YACF;YAEA,IAAIC,2BAA2B;YAC/B,sFAAsF;YACtF,IAAIP,gBAAgB,CAACA,aAAaH,QAAQ,CAACS,SAAS;gBAClD,MAAM,EAAE5B,MAAM,EAAEa,IAAI,EAAEC,KAAK,EAAEf,GAAG,EAAE,GAAGuB,aAAapC,qBAAqB;gBACvE,MAAM,EAAE4C,KAAK,EAAEC,KAAK,EAAE,GAAGjD;gBACzB,MAAMkD,mBAAmB;gBACzB,MAAMC,iBAAiB;gBACvB,MAAMC,cAAcnC,MAAMoC,OAAOC,OAAO;gBACxC,MAAMC,iBAAiBrC,SAASmC,OAAOC,OAAO;gBAE9C,IACEL,QAAQG,cAAcD,kBACtBF,QAAQM,iBAAiBJ,kBACzBH,QAAQjB,OAAOmB,oBACfF,QAAQhB,QAAQkB,kBAChB;oBACAN,kBAAkB;oBAClB;gBACF;gBAEA,iFAAiF;gBACjF,uCAAuC;gBACvC,IAAII,QAAQjB,QAAQiB,QAAQhB,OAAO;oBACjCe,2BAA2BC,QAAQjB,OAAOiB,QAAQjB,OAAOiB,QAAQhB;gBACnE;YACF;YAEA,IAAIhD,kBAAkB8D,QAAQ3D,2BAA2B;gBACvD;YACF;YACA,MAAM,EAAEmB,WAAWkD,eAAe,EAAEjD,SAAS,EAAE,GAAGV,gBAChDC,YACAC,QACAC,OACA,OACA,CAAC+C;YAEH,IAAI,CAACS,iBAAiB;gBACpB;YACF;YACAZ,kBAAkB;gBAChBtB,MAAMkC;gBACNC,MAAMlD;YACR;QACF;QAEA,+FAA+F;QAC/F,wFAAwF;QACxF,2EAA2E;QAC3EmD,UAAUC,iBAAiB,aAAad;QAExC,OAAO;YACLa,UAAUE,oBAAoB,aAAaf;QAC7C;IACF,GAAG;QAACL;QAAc1C;QAAYC;KAAO;IAErCzB,UAAU;QACR,IAAIoE,QAAQmB,OAAO,IAAIlB,gBAAgBc,MAAM;YAC3C1D,OAAOS,cAAc,GAAGC,IAAI,CAAC;gBAC3B,2CAA2C;gBAC3C,IAAIqD,mBAAmB;gBACvB,IACEnB,eAAec,IAAI,CAACM,OAAO,OAAO,eAClCpB,eAAec,IAAI,CAACO,cAAc,OAAO,IACzC;oBACAF,mBAAmB;gBACrB;gBAEA7E,kBACE0D,gBAAgBrB,MAChBoB,QAAQmB,OAAO,EACf/D,YACAgE,mBAAmB5E,QAAQA,QAAQ;YAEvC;QACF;IACF,GAAG;QAACY;QAAY6C;QAAgB5C;KAAO;IAEvC,MAAMkE,iBAAiB5F,YACrB,CAAC2B;QACC,IAAIkE,sBAAsBvB;QAC1B,IAAI,CAACuB,qBAAqBT,MAAM;YAC9B;QACF;QAEA,2GAA2G;QAC3G1D,OAAOoE,MAAM,CAAC;YACZ,2CAA2C;YAC3C,IAAIL,mBAAmB;YACvB,IACEI,oBAAoBT,IAAI,CAACM,OAAO,OAAO,eACvCG,oBAAoBT,IAAI,CAACO,cAAc,OAAO,IAC9C;gBACAF,mBAAmB;YACrB;YAEA,IAAI,CAACA,kBAAkB;gBACrB,MAAMM,eAAelG;gBACrBgG,oBAAoBT,IAAI,CAACY,WAAW,CAACD;gBAErCE,WAAW;oBACTJ,sBAAsB;wBACpB5C,MAAMvB,OAAOa,eAAe,CAACwD,aAAaG,MAAM;wBAChDd,MAAMW;oBACR;oBACAxB,kBAAkBsB;gBACpB,GAAG;YACL;QACF;QAEA,qCAAqC;QACrCI,WAAW;YACTvE,OAAOoE,MAAM,CAAC;gBACZpE,OAAOyE,KAAK;gBAEZ,IACEN,oBAAoBT,IAAI,IACxB,YAAYS,oBAAoBT,IAAI,IACpC,OAAOS,oBAAoBT,IAAI,CAACgB,MAAM,KAAK,YAC3C;oBACAP,oBAAoBT,IAAI,CAACgB,MAAM;gBACjC;YACF;QACF,GAAG;QAEH,gFAAgF;QAChF,6BAA6B;QAC7BH,WAAW;YACTvE,OAAO2E,eAAe,CAAC7F,2BAA2B;gBAChD4E,MAAMS,oBAAoBT,IAAI;YAChC;QACF,GAAG;QAEHzD,MAAM2E,eAAe;QACrB3E,MAAM4E,cAAc;IACtB,GACA;QAAC7E;QAAQ4C;KAAe;IAG1B,qBAAOlE,2BACL,oBAACL,MAAMyG,QAAQ,sBACb,oBAACC;QACCC,WAAU;QACVC,SAAS,CAAChF;YACRiE,eAAejE;QACjB;QACAiF,KAAKvC;QACLwC,MAAK;qBAEL,oBAACC;QAAIJ,WAAWxC,aAAa,SAAS;UAG1CzC;AAEJ;AAEA,OAAO,SAASsF,qBAAqB,EACnCtF,aAAa4D,SAAS2B,IAAI,EAG3B;IACC,MAAM,CAACtF,OAAO,GAAG/B;IACjB,OAAOsE,kBAAkBvC,QAAQD,YAAYC,OAAOuF,SAAS;AAC/D"}
@@ -11,4 +11,4 @@ export function debounce(func, wait) {
11
11
  };
12
12
  }
13
13
 
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9kZWJvdW5jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYzogRnVuY3Rpb24sIHdhaXQ6IG51bWJlcikge1xuICBsZXQgdGltZW91dDogbnVsbCB8IG51bWJlciA9IG51bGxcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICB0aW1lb3V0ID0gbnVsbFxuICAgICAgZnVuYyguLi5hcmdzKVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChsYXRlciwgd2FpdClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlYm91bmNlIiwiZnVuYyIsIndhaXQiLCJ0aW1lb3V0IiwiYXJncyIsImxhdGVyIiwiY2xlYXJUaW1lb3V0Iiwid2luZG93Iiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTQSxTQUFTQyxJQUFjLEVBQUVDLElBQVk7SUFDbkQsSUFBSUMsVUFBeUI7SUFDN0IsT0FBTyxTQUFVLEdBQUdDLElBQVc7UUFDN0IsTUFBTUMsUUFBUTtZQUNaQyxhQUFhSDtZQUNiQSxVQUFVO1lBQ1ZGLFFBQVFHO1FBQ1Y7UUFFQUUsYUFBYUg7UUFDYkEsVUFBVUksT0FBT0MsVUFBVSxDQUFDSCxPQUFPSDtJQUNyQztBQUNGIn0=
14
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.ts"],"sourcesContent":["export function debounce(func: Function, wait: number) {\n let timeout: null | number = null\n return function (...args: any[]) {\n const later = () => {\n clearTimeout(timeout)\n timeout = null\n func(...args)\n }\n\n clearTimeout(timeout)\n timeout = window.setTimeout(later, wait)\n }\n}\n"],"names":["debounce","func","wait","timeout","args","later","clearTimeout","window","setTimeout"],"mappings":"AAAA,OAAO,SAASA,SAASC,IAAc,EAAEC,IAAY;IACnD,IAAIC,UAAyB;IAC7B,OAAO,SAAU,GAAGC,IAAW;QAC7B,MAAMC,QAAQ;YACZC,aAAaH;YACbA,UAAU;YACVF,QAAQG;QACV;QAEAE,aAAaH;QACbA,UAAUI,OAAOC,UAAU,CAACH,OAAOH;IACrC;AACF"}
@@ -11,4 +11,4 @@ export function getBoundingClientRectWithoutTransform(elem) {
11
11
  return rect;
12
12
  }
13
13
 
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXRCb3VuZGluZ1JlY3RXaXRob3V0VHJhbnNmb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW06IEhUTUxFbGVtZW50KTogRE9NUmVjdCB7XG4gIGNvbnN0IHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgLy8gRXh0cmFjdCB0aGUgdHJhbnNsYXRpb24gdmFsdWUgZnJvbSB0aGUgdHJhbnNmb3JtIHN0eWxlXG4gIGNvbnN0IHRyYW5zZm9ybVZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKVxuICBpZiAoIXRyYW5zZm9ybVZhbHVlIHx8IHRyYW5zZm9ybVZhbHVlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gcmVjdFxuICB9XG5cbiAgY29uc3QgbGFzdE51bWJlck9mVHJhbnNmb3JtVmFsdWUgPSB0cmFuc2Zvcm1WYWx1ZS5zcGxpdCgnLCcpLnBvcCgpXG4gIHJlY3QueSA9IHJlY3QueSAtIE51bWJlcihsYXN0TnVtYmVyT2ZUcmFuc2Zvcm1WYWx1ZS5yZXBsYWNlKCcpJywgJycpKVxuXG4gIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgYm91bmRpbmcgcmVjdCBpZiBubyB0cmFuc2xhdGlvbiBpcyBhcHBsaWVkXG4gIHJldHVybiByZWN0XG59XG4iXSwibmFtZXMiOlsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsImVsZW0iLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidHJhbnNmb3JtVmFsdWUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImxhc3ROdW1iZXJPZlRyYW5zZm9ybVZhbHVlIiwic3BsaXQiLCJwb3AiLCJ5IiwiTnVtYmVyIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTQSxzQ0FBc0NDLElBQWlCO0lBQ3JFLE1BQU1DLE9BQU9ELEtBQUtFLHFCQUFxQjtJQUV2Qyx5REFBeUQ7SUFDekQsTUFBTUMsaUJBQWlCQyxpQkFBaUJKLE1BQU1LLGdCQUFnQixDQUFDO0lBQy9ELElBQUksQ0FBQ0Ysa0JBQWtCQSxtQkFBbUIsUUFBUTtRQUNoRCxPQUFPRjtJQUNUO0lBRUEsTUFBTUssNkJBQTZCSCxlQUFlSSxLQUFLLENBQUMsS0FBS0MsR0FBRztJQUNoRVAsS0FBS1EsQ0FBQyxHQUFHUixLQUFLUSxDQUFDLEdBQUdDLE9BQU9KLDJCQUEyQkssT0FBTyxDQUFDLEtBQUs7SUFFakUsaUVBQWlFO0lBQ2pFLE9BQU9WO0FBQ1QifQ==
14
+ //# sourceMappingURL=getBoundingRectWithoutTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.ts"],"sourcesContent":["export function getBoundingClientRectWithoutTransform(elem: HTMLElement): DOMRect {\n const rect = elem.getBoundingClientRect()\n\n // Extract the translation value from the transform style\n const transformValue = getComputedStyle(elem).getPropertyValue('transform')\n if (!transformValue || transformValue === 'none') {\n return rect\n }\n\n const lastNumberOfTransformValue = transformValue.split(',').pop()\n rect.y = rect.y - Number(lastNumberOfTransformValue.replace(')', ''))\n\n // Return the original bounding rect if no translation is applied\n return rect\n}\n"],"names":["getBoundingClientRectWithoutTransform","elem","rect","getBoundingClientRect","transformValue","getComputedStyle","getPropertyValue","lastNumberOfTransformValue","split","pop","y","Number","replace"],"mappings":"AAAA,OAAO,SAASA,sCAAsCC,IAAiB;IACrE,MAAMC,OAAOD,KAAKE,qBAAqB;IAEvC,yDAAyD;IACzD,MAAMC,iBAAiBC,iBAAiBJ,MAAMK,gBAAgB,CAAC;IAC/D,IAAI,CAACF,kBAAkBA,mBAAmB,QAAQ;QAChD,OAAOF;IACT;IAEA,MAAMK,6BAA6BH,eAAeI,KAAK,CAAC,KAAKC,GAAG;IAChEP,KAAKQ,CAAC,GAAGR,KAAKQ,CAAC,GAAGC,OAAOJ,2BAA2BK,OAAO,CAAC,KAAK;IAEjE,iEAAiE;IACjE,OAAOV;AACT"}
@@ -148,4 +148,4 @@ export function getNodeCloseToPoint(props) {
148
148
  };
149
149
  }
150
150
 
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXROb2RlQ2xvc2VUb1BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgbGV4aWNhbEltcG9ydCBmcm9tICdsZXhpY2FsJ1xuY29uc3QgeyAkZ2V0Tm9kZUJ5S2V5IH0gPSBsZXhpY2FsSW1wb3J0XG5cbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcG9pbnQuanMnXG5pbXBvcnQgeyBSZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVjdC5qcydcbmltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zLmpzJ1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMuanMnXG5pbXBvcnQgeyBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtIH0gZnJvbSAnLi9nZXRCb3VuZGluZ1JlY3RXaXRob3V0VHJhbnNmb3JtLmpzJ1xuXG4vLyBEaXJlY3Rpb25zXG5jb25zdCBEb3dud2FyZCA9IDFcbmNvbnN0IFVwd2FyZCA9IC0xXG5jb25zdCBJbmRldGVybWluYXRlID0gMFxuXG50eXBlIFByb3BzID0ge1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBjYWNoZV90cmVzaG9sZD86IG51bWJlclxuICBlZGl0b3I6IExleGljYWxFZGl0b3JcbiAgLyoqIGZ1enp5IG1ha2VzIHRoZSBzZWFyY2ggbm90IGV4YWN0LiBJZiBubyBleGFjdCBtYXRjaCBmb3VuZCwgZmluZCB0aGUgY2xvc2VzIG5vZGUgaW5zdGVhZCBvZiByZXR1cm5pbmcgbnVsbCAqL1xuICBmdXp6eT86IGJvb2xlYW5cbiAgaG9yaXpvbnRhbE9mZnNldD86IG51bWJlclxuICBwb2ludDogUG9pbnRcbiAgLyoqXG4gICAqIFRoZSBpbmRleCB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS4gSXQgY2FuIGJlIGEgY29uc2lkZXJhYmxlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBzdGFydCBzZWFyY2hpbmcgZnJvbSB0aGUgaW5kZXggb2YgdGhlXG4gICAqIHByZXZpb3VzbHkgZm91bmQgbm9kZSwgYXMgdGhlIG5vZGUgaXMgbGlrZWx5IHRvIGJlIGNsb3NlIHRvIHRoZSBuZXh0IG5vZGUuXG4gICAqL1xuICBzdGFydEluZGV4PzogbnVtYmVyXG4gIHVzZUVkZ2VBc0RlZmF1bHQ/OiBib29sZWFuXG4gIHZlcmJvc2U/OiBib29sZWFuXG59XG5cbnR5cGUgT3V0cHV0ID0ge1xuICBibG9ja0VsZW06IEhUTUxFbGVtZW50IHwgbnVsbFxuICBibG9ja05vZGU6IExleGljYWxOb2RlIHwgbnVsbFxuICBmb3VuZEF0SW5kZXg6IG51bWJlclxuICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBib29sZWFuXG59XG5cbmNvbnN0IGNhY2hlID0ge1xuICBwcm9wczogbnVsbCBhcyBQcm9wcyB8IG51bGwsXG4gIHJlc3VsdDogbnVsbCBhcyBPdXRwdXQgfCBudWxsLFxufVxuXG5mdW5jdGlvbiBpc1BvaW50Q2xvc2UocHJldmlvdXM6IFBvaW50LCBjdXJyZW50OiBQb2ludCwgdGhyZXNob2xkOiBudW1iZXIgPSAyMCk6IGJvb2xlYW4ge1xuICBjb25zdCBkeCA9IHByZXZpb3VzLnggLSBjdXJyZW50LnhcbiAgY29uc3QgZHkgPSBwcmV2aW91cy55IC0gY3VycmVudC55XG4gIHJldHVybiBkeCAqIGR4ICsgZHkgKiBkeSA8PSB0aHJlc2hvbGQgKiB0aHJlc2hvbGRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVDbG9zZVRvUG9pbnQocHJvcHM6IFByb3BzKTogT3V0cHV0IHtcbiAgY29uc3Qge1xuICAgIGFuY2hvckVsZW0sXG4gICAgY2FjaGVfdHJlc2hvbGQgPSAyMCxcbiAgICBlZGl0b3IsXG4gICAgZnV6enkgPSBmYWxzZSxcbiAgICBob3Jpem9udGFsT2Zmc2V0ID0gMCxcbiAgICBwb2ludDogeyB4LCB5IH0sXG4gICAgc3RhcnRJbmRleCA9IDAsXG4gICAgdXNlRWRnZUFzRGVmYXVsdCA9IGZhbHNlLFxuICAgIHZlcmJvc2UgPSBmYWxzZSxcbiAgfSA9IHByb3BzXG5cbiAgLy8gVXNlIGNhY2hlXG4gIGlmIChcbiAgICBjYWNoZV90cmVzaG9sZCA+IDAgJiZcbiAgICBjYWNoZS5wcm9wcyAmJlxuICAgIGNhY2hlLnJlc3VsdCAmJlxuICAgIGNhY2hlLnByb3BzLmZ1enp5ID09PSBwcm9wcy5mdXp6eSAmJlxuICAgIGNhY2hlLnByb3BzLmhvcml6b250YWxPZmZzZXQgPT09IHByb3BzLmhvcml6b250YWxPZmZzZXQgJiZcbiAgICBjYWNoZS5wcm9wcy51c2VFZGdlQXNEZWZhdWx0ID09PSBwcm9wcy51c2VFZGdlQXNEZWZhdWx0ICYmXG4gICAgaXNQb2ludENsb3NlKGNhY2hlLnByb3BzLnBvaW50LCBwcm9wcy5wb2ludCwgY2FjaGVfdHJlc2hvbGQpXG4gICkge1xuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAvL2NvbnNvbGUubG9nKCdSZXR1cm5pbmcgY2FjaGVkIHJlc3VsdCcpXG4gICAgfVxuICAgIHJldHVybiBjYWNoZS5yZXN1bHRcbiAgfVxuXG4gIGNvbnN0IGFuY2hvckVsZW1lbnRSZWN0ID0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCB0b3BMZXZlbE5vZGVLZXlzID0gZ2V0VG9wTGV2ZWxOb2RlS2V5cyhlZGl0b3IpXG5cbiAgY29uc3QgY2xvc2VzdEJsb2NrRWxlbToge1xuICAgIGJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsXG4gICAgYmxvY2tOb2RlOiBMZXhpY2FsTm9kZSB8IG51bGxcbiAgICBkaXN0YW5jZTogbnVtYmVyXG4gICAgZm91bmRBdEluZGV4OiBudW1iZXJcbiAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBib29sZWFuXG4gIH0gPSB7XG4gICAgYmxvY2tFbGVtOiBudWxsLFxuICAgIGJsb2NrTm9kZTogbnVsbCxcbiAgICBkaXN0YW5jZTogSW5maW5pdHksXG4gICAgZm91bmRBdEluZGV4OiAtMSxcbiAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBmYWxzZSxcbiAgfVxuXG4gIC8vIFJldHVybiBudWxsIGlmIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZVxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBpZiAodXNlRWRnZUFzRGVmYXVsdCkge1xuICAgICAgY29uc3QgW2ZpcnN0Tm9kZSwgbGFzdE5vZGVdID0gW1xuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pLFxuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSksXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IFtmaXJzdE5vZGVSZWN0LCBsYXN0Tm9kZVJlY3RdID0gW1xuICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGZpcnN0Tm9kZSksXG4gICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0obGFzdE5vZGUpLFxuICAgICAgXVxuXG4gICAgICBpZiAoZmlyc3ROb2RlUmVjdCAmJiBsYXN0Tm9kZVJlY3QpIHtcbiAgICAgICAgaWYgKHkgPCBmaXJzdE5vZGVSZWN0LnRvcCkge1xuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gZmlyc3ROb2RlXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5kaXN0YW5jZSA9IGZpcnN0Tm9kZVJlY3QudG9wIC0geVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlID0gJGdldE5vZGVCeUtleSh0b3BMZXZlbE5vZGVLZXlzWzBdKVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4ID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHkgPiBsYXN0Tm9kZVJlY3QuYm90dG9tKSB7XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5kaXN0YW5jZSA9IHkgLSBsYXN0Tm9kZVJlY3QuYm90dG9tXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSlcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSA9IGxhc3ROb2RlXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5mb3VuZEF0SW5kZXggPSB0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zZXN0QmxvY2tFbGVtPy5ibG9ja0VsZW0pIHtcbiAgICAgICAgICBpZiAodmVyYm9zZSkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygndXNlRWRnZUFzRGVmYXVsdCcsIHVzZUVkZ2VBc0RlZmF1bHQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrRWxlbTogbnVsbCxcbiAgICAgICAgICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGZhbHNlLFxuICAgICAgICAgIH0gYXMgT3V0cHV0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5kIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnRcbiAgICBsZXQgaW5kZXggPSBzdGFydEluZGV4XG4gICAgbGV0IGRpcmVjdGlvbiA9IEluZGV0ZXJtaW5hdGVcblxuICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAvL2NvbnNvbGUubG9nKCdzdGFydCBpbmRleCcsIHN0YXJ0SW5kZXgpXG4gICAgfVxuXG4gICAgd2hpbGUgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCkge1xuICAgICAgY29uc3Qga2V5ID0gdG9wTGV2ZWxOb2RlS2V5c1tpbmRleF1cbiAgICAgIGNvbnN0IGVsZW0gPSBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KGtleSlcbiAgICAgIGlmIChlbGVtID09PSBudWxsKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjb25zdCBwb2ludCA9IG5ldyBQb2ludCh4ICsgaG9yaXpvbnRhbE9mZnNldCwgeSlcbiAgICAgIC8vY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTShlbGVtKVxuICAgICAgLy8gRG8gbm90IGNvbnNpZGVyIHRyYW5zZm9ybSBvZiBibG9ja3Mgd2hlbiBjYWxjdWxhdGluZyBkaXN0YW5jZVxuICAgICAgY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTVJlY3QoZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShlbGVtKSlcblxuICAgICAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyhlbGVtKVxuXG4gICAgICBjb25zdCByZWN0ID0gZG9tUmVjdC5nZW5lcmF0ZU5ld1JlY3Qoe1xuICAgICAgICBib3R0b206IGRvbVJlY3QuYm90dG9tICsgbWFyZ2luQm90dG9tLFxuICAgICAgICBsZWZ0OiBhbmNob3JFbGVtZW50UmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYW5jaG9yRWxlbWVudFJlY3QucmlnaHQsXG4gICAgICAgIHRvcDogZG9tUmVjdC50b3AgLSBtYXJnaW5Ub3AsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7IGRpc3RhbmNlLCBpc09uQm90dG9tU2lkZSwgaXNPblRvcFNpZGUgfSA9IHJlY3QuZGlzdGFuY2VGcm9tUG9pbnQocG9pbnQpXG5cbiAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coJ2Rpc3RhbmNlJywgZGlzdGFuY2UpXG4gICAgICB9XG5cbiAgICAgIGlmIChkaXN0YW5jZSA9PT0gMCkge1xuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSA9IGVsZW1cbiAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5mb3VuZEF0SW5kZXggPSBpbmRleFxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0gZGlzdGFuY2VcblxuICAgICAgICAvLyBDaGVjayBpZiBibG9ja05vZGUgaXMgYW4gZW1wdHkgdGV4dCBub2RlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSAmJlxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlLmdldFR5cGUoKSA9PT0gJ3BhcmFncmFwaCcgJiZcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZS5nZXRUZXh0Q29udGVudCgpID09PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoIWZ1enp5KSB7XG4gICAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSA9IG51bGxcbiAgICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlID0gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmIChmdXp6eSkge1xuICAgICAgICBpZiAoZGlzdGFuY2UgPCBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlKSB7XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0gPSBlbGVtXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0gZGlzdGFuY2VcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IGluZGV4XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gSW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoaXNPblRvcFNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBVcHdhcmRcbiAgICAgICAgfSBlbHNlIGlmIChpc09uQm90dG9tU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IERvd253YXJkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RvcCBzZWFyY2ggYmxvY2sgZWxlbWVudFxuICAgICAgICAgIGRpcmVjdGlvbiA9IEluZmluaXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gZGlyZWN0aW9uXG4gICAgfVxuICB9KVxuXG4gIC8vIFN0b3JlIGluIGNhY2hlIGJlZm9yZSByZXR1cm5pbmdcbiAgY2FjaGUucHJvcHMgPSBwcm9wc1xuICBjYWNoZS5yZXN1bHQgPSB7XG4gICAgYmxvY2tFbGVtOiBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSxcbiAgICBibG9ja05vZGU6IGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlLFxuICAgIGZvdW5kQXRJbmRleDogY2xvc2VzdEJsb2NrRWxlbS5mb3VuZEF0SW5kZXgsXG4gICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaDogY2xvc2VzdEJsb2NrRWxlbS5pc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBibG9ja0VsZW06IGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUsXG4gICAgZm91bmRBdEluZGV4OiBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCxcbiAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBjbG9zZXN0QmxvY2tFbGVtLmlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJsZXhpY2FsSW1wb3J0IiwiJGdldE5vZGVCeUtleSIsIlBvaW50IiwiUmVjdCIsImdldENvbGxhcHNlZE1hcmdpbnMiLCJnZXRUb3BMZXZlbE5vZGVLZXlzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsIkRvd253YXJkIiwiVXB3YXJkIiwiSW5kZXRlcm1pbmF0ZSIsImNhY2hlIiwicHJvcHMiLCJyZXN1bHQiLCJpc1BvaW50Q2xvc2UiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJ0aHJlc2hvbGQiLCJkeCIsIngiLCJkeSIsInkiLCJnZXROb2RlQ2xvc2VUb1BvaW50IiwiYW5jaG9yRWxlbSIsImNhY2hlX3RyZXNob2xkIiwiZWRpdG9yIiwiZnV6enkiLCJob3Jpem9udGFsT2Zmc2V0IiwicG9pbnQiLCJzdGFydEluZGV4IiwidXNlRWRnZUFzRGVmYXVsdCIsInZlcmJvc2UiLCJhbmNob3JFbGVtZW50UmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcExldmVsTm9kZUtleXMiLCJjbG9zZXN0QmxvY2tFbGVtIiwiYmxvY2tFbGVtIiwiYmxvY2tOb2RlIiwiZGlzdGFuY2UiLCJJbmZpbml0eSIsImZvdW5kQXRJbmRleCIsImlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgiLCJnZXRFZGl0b3JTdGF0ZSIsInJlYWQiLCJmaXJzdE5vZGUiLCJsYXN0Tm9kZSIsImdldEVsZW1lbnRCeUtleSIsImxlbmd0aCIsImZpcnN0Tm9kZVJlY3QiLCJsYXN0Tm9kZVJlY3QiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJkb21SZWN0IiwiZnJvbURPTVJlY3QiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5Ub3AiLCJyZWN0IiwiZ2VuZXJhdGVOZXdSZWN0IiwibGVmdCIsInJpZ2h0IiwiaXNPbkJvdHRvbVNpZGUiLCJpc09uVG9wU2lkZSIsImRpc3RhbmNlRnJvbVBvaW50IiwiZ2V0VHlwZSIsImdldFRleHRDb250ZW50Il0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxtQkFBbUIsVUFBUztBQUNuQyxNQUFNLEVBQUVDLGFBQWEsRUFBRSxHQUFHRDtBQUUxQixTQUFTRSxLQUFLLFFBQVEsMEJBQXlCO0FBQy9DLFNBQVNDLElBQUksUUFBUSx5QkFBd0I7QUFDN0MsU0FBU0MsbUJBQW1CLFFBQVEsa0NBQWlDO0FBQ3JFLFNBQVNDLG1CQUFtQixRQUFRLGtDQUFpQztBQUNyRSxTQUFTQyxxQ0FBcUMsUUFBUSx1Q0FBc0M7QUFFNUYsYUFBYTtBQUNiLE1BQU1DLFdBQVc7QUFDakIsTUFBTUMsU0FBUyxDQUFDO0FBQ2hCLE1BQU1DLGdCQUFnQjtBQTBCdEIsTUFBTUMsUUFBUTtJQUNaQyxPQUFPO0lBQ1BDLFFBQVE7QUFDVjtBQUVBLFNBQVNDLGFBQWFDLFFBQWUsRUFBRUMsT0FBYyxFQUFFQyxZQUFvQixFQUFFO0lBQzNFLE1BQU1DLEtBQUtILFNBQVNJLENBQUMsR0FBR0gsUUFBUUcsQ0FBQztJQUNqQyxNQUFNQyxLQUFLTCxTQUFTTSxDQUFDLEdBQUdMLFFBQVFLLENBQUM7SUFDakMsT0FBT0gsS0FBS0EsS0FBS0UsS0FBS0EsTUFBTUgsWUFBWUE7QUFDMUM7QUFFQSxPQUFPLFNBQVNLLG9CQUFvQlYsS0FBWTtJQUM5QyxNQUFNLEVBQ0pXLFVBQVUsRUFDVkMsaUJBQWlCLEVBQUUsRUFDbkJDLE1BQU0sRUFDTkMsUUFBUSxLQUFLLEVBQ2JDLG1CQUFtQixDQUFDLEVBQ3BCQyxPQUFPLEVBQUVULENBQUMsRUFBRUUsQ0FBQyxFQUFFLEVBQ2ZRLGFBQWEsQ0FBQyxFQUNkQyxtQkFBbUIsS0FBSyxFQUN4QkMsVUFBVSxLQUFLLEVBQ2hCLEdBQUduQjtJQUVKLFlBQVk7SUFDWixJQUNF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
151
+ //# sourceMappingURL=getNodeCloseToPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.ts"],"sourcesContent":["import type { LexicalEditor, LexicalNode } from 'lexical'\n\nimport lexicalImport from 'lexical'\nconst { $getNodeByKey } = lexicalImport\n\nimport { Point } from '../../../utils/point.js'\nimport { Rect } from '../../../utils/rect.js'\nimport { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\n\n// Directions\nconst Downward = 1\nconst Upward = -1\nconst Indeterminate = 0\n\ntype Props = {\n anchorElem: HTMLElement\n cache_treshold?: number\n editor: LexicalEditor\n /** fuzzy makes the search not exact. If no exact match found, find the closes node instead of returning null */\n fuzzy?: boolean\n horizontalOffset?: number\n point: Point\n /**\n * The index to start searching from. It can be a considerable performance optimization to start searching from the index of the\n * previously found node, as the node is likely to be close to the next node.\n */\n startIndex?: number\n useEdgeAsDefault?: boolean\n verbose?: boolean\n}\n\ntype Output = {\n blockElem: HTMLElement | null\n blockNode: LexicalNode | null\n foundAtIndex: number\n isFoundNodeEmptyParagraph: boolean\n}\n\nconst cache = {\n props: null as Props | null,\n result: null as Output | null,\n}\n\nfunction isPointClose(previous: Point, current: Point, threshold: number = 20): boolean {\n const dx = previous.x - current.x\n const dy = previous.y - current.y\n return dx * dx + dy * dy <= threshold * threshold\n}\n\nexport function getNodeCloseToPoint(props: Props): Output {\n const {\n anchorElem,\n cache_treshold = 20,\n editor,\n fuzzy = false,\n horizontalOffset = 0,\n point: { x, y },\n startIndex = 0,\n useEdgeAsDefault = false,\n verbose = false,\n } = props\n\n // Use cache\n if (\n cache_treshold > 0 &&\n cache.props &&\n cache.result &&\n cache.props.fuzzy === props.fuzzy &&\n cache.props.horizontalOffset === props.horizontalOffset &&\n cache.props.useEdgeAsDefault === props.useEdgeAsDefault &&\n isPointClose(cache.props.point, props.point, cache_treshold)\n ) {\n if (verbose) {\n //console.log('Returning cached result')\n }\n return cache.result\n }\n\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const closestBlockElem: {\n blockElem: HTMLElement | null\n blockNode: LexicalNode | null\n distance: number\n foundAtIndex: number\n isFoundNodeEmptyParagraph: boolean\n } = {\n blockElem: null,\n blockNode: null,\n distance: Infinity,\n foundAtIndex: -1,\n isFoundNodeEmptyParagraph: false,\n }\n\n // Return null if matching block element is the first or last node\n editor.getEditorState().read(() => {\n if (useEdgeAsDefault) {\n const [firstNode, lastNode] = [\n editor.getElementByKey(topLevelNodeKeys[0]),\n editor.getElementByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1]),\n ]\n\n const [firstNodeRect, lastNodeRect] = [\n getBoundingClientRectWithoutTransform(firstNode),\n getBoundingClientRectWithoutTransform(lastNode),\n ]\n\n if (firstNodeRect && lastNodeRect) {\n if (y < firstNodeRect.top) {\n closestBlockElem.blockElem = firstNode\n closestBlockElem.distance = firstNodeRect.top - y\n closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[0])\n closestBlockElem.foundAtIndex = 0\n } else if (y > lastNodeRect.bottom) {\n closestBlockElem.distance = y - lastNodeRect.bottom\n closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1])\n closestBlockElem.blockElem = lastNode\n closestBlockElem.foundAtIndex = topLevelNodeKeys.length - 1\n }\n\n if (closestBlockElem?.blockElem) {\n if (verbose) {\n //console.log('useEdgeAsDefault', useEdgeAsDefault)\n }\n\n return {\n blockElem: null,\n isFoundNodeEmptyParagraph: false,\n } as Output\n }\n }\n }\n\n // Find matching block element\n let index = startIndex\n let direction = Indeterminate\n\n if (verbose) {\n //console.log('start index', startIndex)\n }\n\n while (index >= 0 && index < topLevelNodeKeys.length) {\n const key = topLevelNodeKeys[index]\n const elem = editor.getElementByKey(key)\n if (elem === null) {\n break\n }\n const point = new Point(x + horizontalOffset, y)\n //const domRect = Rect.fromDOM(elem)\n // Do not consider transform of blocks when calculating distance\n const domRect = Rect.fromDOMRect(getBoundingClientRectWithoutTransform(elem))\n\n const { marginBottom, marginTop } = getCollapsedMargins(elem)\n\n const rect = domRect.generateNewRect({\n bottom: domRect.bottom + marginBottom,\n left: anchorElementRect.left,\n right: anchorElementRect.right,\n top: domRect.top - marginTop,\n })\n\n const { distance, isOnBottomSide, isOnTopSide } = rect.distanceFromPoint(point)\n\n if (verbose) {\n //console.log('distance', distance)\n }\n\n if (distance === 0) {\n closestBlockElem.blockElem = elem\n closestBlockElem.blockNode = $getNodeByKey(key)\n closestBlockElem.foundAtIndex = index\n closestBlockElem.distance = distance\n\n // Check if blockNode is an empty text node\n if (\n closestBlockElem.blockNode &&\n closestBlockElem.blockNode.getType() === 'paragraph' &&\n closestBlockElem.blockNode.getTextContent() === ''\n ) {\n if (!fuzzy) {\n closestBlockElem.blockElem = null\n closestBlockElem.blockNode = null\n }\n\n closestBlockElem.isFoundNodeEmptyParagraph = true\n }\n break\n } else if (fuzzy) {\n if (distance < closestBlockElem.distance) {\n closestBlockElem.blockElem = elem\n closestBlockElem.blockNode = $getNodeByKey(key)\n closestBlockElem.distance = distance\n closestBlockElem.foundAtIndex = index\n }\n }\n\n if (direction === Indeterminate) {\n if (isOnTopSide) {\n direction = Upward\n } else if (isOnBottomSide) {\n direction = Downward\n } else {\n // stop search block element\n direction = Infinity\n }\n }\n\n index += direction\n }\n })\n\n // Store in cache before returning\n cache.props = props\n cache.result = {\n blockElem: closestBlockElem.blockElem,\n blockNode: closestBlockElem.blockNode,\n foundAtIndex: closestBlockElem.foundAtIndex,\n isFoundNodeEmptyParagraph: closestBlockElem.isFoundNodeEmptyParagraph,\n }\n\n return {\n blockElem: closestBlockElem.blockElem,\n blockNode: closestBlockElem.blockNode,\n foundAtIndex: closestBlockElem.foundAtIndex,\n isFoundNodeEmptyParagraph: closestBlockElem.isFoundNodeEmptyParagraph,\n }\n}\n"],"names":["lexicalImport","$getNodeByKey","Point","Rect","getCollapsedMargins","getTopLevelNodeKeys","getBoundingClientRectWithoutTransform","Downward","Upward","Indeterminate","cache","props","result","isPointClose","previous","current","threshold","dx","x","dy","y","getNodeCloseToPoint","anchorElem","cache_treshold","editor","fuzzy","horizontalOffset","point","startIndex","useEdgeAsDefault","verbose","anchorElementRect","getBoundingClientRect","topLevelNodeKeys","closestBlockElem","blockElem","blockNode","distance","Infinity","foundAtIndex","isFoundNodeEmptyParagraph","getEditorState","read","firstNode","lastNode","getElementByKey","length","firstNodeRect","lastNodeRect","top","bottom","index","direction","key","elem","domRect","fromDOMRect","marginBottom","marginTop","rect","generateNewRect","left","right","isOnBottomSide","isOnTopSide","distanceFromPoint","getType","getTextContent"],"mappings":"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"}
@@ -24,4 +24,4 @@ export function highlightElemOriginalPosition(debugHighlightRef, htmlElem, ancho
24
24
  debugHighlightRef.current.style.opacity = '0.5';
25
25
  }
26
26
 
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybS5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKFxuICBkZWJ1Z0hpZ2hsaWdodFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgaHRtbEVsZW06IEhUTUxFbGVtZW50LFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbikge1xuICBpZiAoIWRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQpIHtcbiAgICAvLyBJZiB0aGUgcmVmIGRvZXNuJ3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcgZWxlbWVudCwgd2UgY2FuJ3Qgc2V0IHN0eWxlc1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBsZWZ0OiBhbmNob3JMZWZ0LCB0b3A6IGFuY2hvclRvcCB9ID0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gIC8vIEdldCBjb21wdXRlZCBzdHlsZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgY29uc3QgYm91bmRpbmdSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShodG1sRWxlbSlcblxuICAvLyBFeHRyYWN0IG5lY2Vzc2FyeSBzdHlsZXMgKGlnbm9yaW5nIHRyYW5zZm9ybSlcbiAgY29uc3Qgd2lkdGggPSBib3VuZGluZ1JlY3Qud2lkdGhcbiAgY29uc3QgaGVpZ2h0ID0gYm91bmRpbmdSZWN0LmhlaWdodFxuICBjb25zdCB0b3AgPSBib3VuZGluZ1JlY3QudG9wIC0gYW5jaG9yVG9wXG4gIGNvbnN0IGxlZnQgPSBib3VuZGluZ1JlY3QubGVmdCAtIGFuY2hvckxlZnRcblxuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JlZW4nXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4J1xuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS50b3AgPSB0b3AgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS56SW5kZXggPSAnMTAwMCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAuNSdcbn1cbiJdLCJuYW1lcyI6WyJnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtIiwiaGlnaGxpZ2h0RWxlbU9yaWdpbmFsUG9zaXRpb24iLCJkZWJ1Z0hpZ2hsaWdodFJlZiIsImh0bWxFbGVtIiwiYW5jaG9yRWxlbSIsImN1cnJlbnQiLCJsZWZ0IiwiYW5jaG9yTGVmdCIsInRvcCIsImFuY2hvclRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJvdW5kaW5nUmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJib3JkZXIiLCJib3hTaXppbmciLCJwb2ludGVyRXZlbnRzIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJvcGFjaXR5Il0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxxQ0FBcUMsUUFBUSx1Q0FBc0M7QUFFNUYsT0FBTyxTQUFTQyw4QkFDZEMsaUJBQWtELEVBQ2xEQyxRQUFxQixFQUNyQkMsVUFBdUI7SUFFdkIsSUFBSSxDQUFDRixrQkFBa0JHLE9BQU8sRUFBRTtRQUM5Qix1RUFBdUU7UUFDdkU7SUFDRjtJQUVBLE1BQU0sRUFBRUMsTUFBTUMsVUFBVSxFQUFFQyxLQUFLQyxTQUFTLEVBQUUsR0FBR0wsV0FBV00scUJBQXFCO0lBRTdFLDJDQUEyQztJQUMzQyxNQUFNQyxlQUFlWCxzQ0FBc0NHO0lBRTNELGdEQUFnRDtJQUNoRCxNQUFNUyxRQUFRRCxhQUFhQyxLQUFLO0lBQ2hDLE1BQU1DLFNBQVNGLGFBQWFFLE1BQU07SUFDbEMsTUFBTUwsTUFBTUcsYUFBYUgsR0FBRyxHQUFHQztJQUMvQixNQUFNSCxPQUFPSyxhQUFhTCxJQUFJLEdBQUdDO0lBRWpDTCxrQkFBa0JHLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDQyxNQUFNLEdBQUc7SUFDekNiLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNFLFNBQVMsR0FBRztJQUM1Q2Qsa0JBQWtCRyxPQUFPLENBQUNTLEtBQUssQ0FBQ0QsTUFBTSxHQUFHQSxTQUFTO0lBQ2xEWCxrQkFBa0JHLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDRyxhQUFhLEdBQUc7SUFDaERmLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNJLFFBQVEsR0FBRztJQUMzQ2hCLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNOLEdBQUcsR0FBR0EsTUFBTTtJQUM1Q04sa0JBQWtCRyxPQUFPLENBQUNTLEtBQUssQ0FBQ1IsSUFBSSxHQUFHQSxPQUFPO0lBQzlDSixrQkFBa0JHLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDRixLQUFLLEdBQUdBLFFBQVE7SUFDaERWLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNLLE1BQU0sR0FBRztJQUN6Q2pCLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNNLE9BQU8sR0FBRztBQUM1QyJ9
27
+ //# sourceMappingURL=highlightElemOriginalPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.ts"],"sourcesContent":["import type React from 'react'\n\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\n\nexport function highlightElemOriginalPosition(\n debugHighlightRef: React.RefObject<HTMLDivElement>,\n htmlElem: HTMLElement,\n anchorElem: HTMLElement,\n) {\n if (!debugHighlightRef.current) {\n // If the ref doesn't point to an existing element, we can't set styles\n return\n }\n\n const { left: anchorLeft, top: anchorTop } = anchorElem.getBoundingClientRect()\n\n // Get computed styles of the given element\n const boundingRect = getBoundingClientRectWithoutTransform(htmlElem)\n\n // Extract necessary styles (ignoring transform)\n const width = boundingRect.width\n const height = boundingRect.height\n const top = boundingRect.top - anchorTop\n const left = boundingRect.left - anchorLeft\n\n debugHighlightRef.current.style.border = '2px solid green'\n debugHighlightRef.current.style.boxSizing = 'border-box'\n debugHighlightRef.current.style.height = height + 'px'\n debugHighlightRef.current.style.pointerEvents = 'none'\n debugHighlightRef.current.style.position = 'absolute'\n debugHighlightRef.current.style.top = top + 'px'\n debugHighlightRef.current.style.left = left + 'px'\n debugHighlightRef.current.style.width = width + 'px'\n debugHighlightRef.current.style.zIndex = '1000'\n debugHighlightRef.current.style.opacity = '0.5'\n}\n"],"names":["getBoundingClientRectWithoutTransform","highlightElemOriginalPosition","debugHighlightRef","htmlElem","anchorElem","current","left","anchorLeft","top","anchorTop","getBoundingClientRect","boundingRect","width","height","style","border","boxSizing","pointerEvents","position","zIndex","opacity"],"mappings":"AAEA,SAASA,qCAAqC,QAAQ,uCAAsC;AAE5F,OAAO,SAASC,8BACdC,iBAAkD,EAClDC,QAAqB,EACrBC,UAAuB;IAEvB,IAAI,CAACF,kBAAkBG,OAAO,EAAE;QAC9B,uEAAuE;QACvE;IACF;IAEA,MAAM,EAAEC,MAAMC,UAAU,EAAEC,KAAKC,SAAS,EAAE,GAAGL,WAAWM,qBAAqB;IAE7E,2CAA2C;IAC3C,MAAMC,eAAeX,sCAAsCG;IAE3D,gDAAgD;IAChD,MAAMS,QAAQD,aAAaC,KAAK;IAChC,MAAMC,SAASF,aAAaE,MAAM;IAClC,MAAML,MAAMG,aAAaH,GAAG,GAAGC;IAC/B,MAAMH,OAAOK,aAAaL,IAAI,GAAGC;IAEjCL,kBAAkBG,OAAO,CAACS,KAAK,CAACC,MAAM,GAAG;IACzCb,kBAAkBG,OAAO,CAACS,KAAK,CAACE,SAAS,GAAG;IAC5Cd,kBAAkBG,OAAO,CAACS,KAAK,CAACD,MAAM,GAAGA,SAAS;IAClDX,kBAAkBG,OAAO,CAACS,KAAK,CAACG,aAAa,GAAG;IAChDf,kBAAkBG,OAAO,CAACS,KAAK,CAACI,QAAQ,GAAG;IAC3ChB,kBAAkBG,OAAO,CAACS,KAAK,CAACN,GAAG,GAAGA,MAAM;IAC5CN,kBAAkBG,OAAO,CAACS,KAAK,CAACR,IAAI,GAAGA,OAAO;IAC9CJ,kBAAkBG,OAAO,CAACS,KAAK,CAACF,KAAK,GAAGA,QAAQ;IAChDV,kBAAkBG,OAAO,CAACS,KAAK,CAACK,MAAM,GAAG;IACzCjB,kBAAkBG,OAAO,CAACS,KAAK,CAACM,OAAO,GAAG;AAC5C"}