@payloadcms/richtext-lexical 3.0.0-alpha.18 → 3.0.0-alpha.19

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 (276) hide show
  1. package/components.js +6 -33
  2. package/dist/cell/index.js +29 -80
  3. package/dist/exports/components.js +6 -33
  4. package/dist/field/Field.js +15 -66
  5. package/dist/field/features/align/feature.client.js +21 -31
  6. package/dist/field/features/align/feature.server.js +4 -14
  7. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +4 -14
  8. package/dist/field/features/blockquote/feature.client.js +20 -30
  9. package/dist/field/features/blockquote/feature.server.js +11 -21
  10. package/dist/field/features/blockquote/markdownTransformer.js +9 -19
  11. package/dist/field/features/blocks/component/BlockContent.js +34 -85
  12. package/dist/field/features/blocks/component/FormSavePlugin.js +7 -17
  13. package/dist/field/features/blocks/component/index.js +25 -76
  14. package/dist/field/features/blocks/drawer/index.js +25 -84
  15. package/dist/field/features/blocks/feature.client.js +15 -25
  16. package/dist/field/features/blocks/feature.server.js +16 -26
  17. package/dist/field/features/blocks/nodes/BlocksNode.js +11 -78
  18. package/dist/field/features/blocks/plugin/commands.js +3 -13
  19. package/dist/field/features/blocks/plugin/index.js +20 -71
  20. package/dist/field/features/blocks/populationPromise.js +6 -16
  21. package/dist/field/features/blocks/validate.js +4 -14
  22. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +2 -12
  23. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +4 -14
  24. package/dist/field/features/converters/html/converter/converters/linebreak.js +2 -12
  25. package/dist/field/features/converters/html/converter/converters/paragraph.js +4 -14
  26. package/dist/field/features/converters/html/converter/converters/text.js +10 -20
  27. package/dist/field/features/converters/html/converter/defaultConverters.js +8 -18
  28. package/dist/field/features/converters/html/converter/index.js +3 -21
  29. package/dist/field/features/converters/html/converter/types.js +2 -5
  30. package/dist/field/features/converters/html/feature.server.js +2 -12
  31. package/dist/field/features/converters/html/field/index.js +11 -25
  32. package/dist/field/features/createClientComponent.js +6 -14
  33. package/dist/field/features/createFeaturePropComponent.js +5 -15
  34. package/dist/field/features/debug/testrecorder/feature.client.js +5 -15
  35. package/dist/field/features/debug/testrecorder/feature.server.js +4 -14
  36. package/dist/field/features/debug/testrecorder/plugin/index.js +41 -99
  37. package/dist/field/features/debug/treeview/feature.client.js +5 -15
  38. package/dist/field/features/debug/treeview/feature.server.js +4 -14
  39. package/dist/field/features/debug/treeview/plugin/index.js +8 -59
  40. package/dist/field/features/format/bold/feature.client.js +14 -24
  41. package/dist/field/features/format/bold/feature.server.js +8 -18
  42. package/dist/field/features/format/bold/markdownTransformers.js +5 -29
  43. package/dist/field/features/format/common/floatingSelectToolbarSection.js +2 -12
  44. package/dist/field/features/format/inlinecode/feature.client.js +12 -22
  45. package/dist/field/features/format/inlinecode/feature.server.js +6 -16
  46. package/dist/field/features/format/inlinecode/markdownTransformers.js +2 -12
  47. package/dist/field/features/format/italic/feature.client.js +13 -23
  48. package/dist/field/features/format/italic/feature.server.js +7 -17
  49. package/dist/field/features/format/italic/markdownTransformers.js +3 -21
  50. package/dist/field/features/format/strikethrough/feature.client.js +12 -22
  51. package/dist/field/features/format/strikethrough/feature.server.js +6 -16
  52. package/dist/field/features/format/strikethrough/markdownTransformers.js +2 -12
  53. package/dist/field/features/format/subscript/feature.client.js +10 -20
  54. package/dist/field/features/format/subscript/feature.server.js +4 -14
  55. package/dist/field/features/format/superscript/feature.client.js +10 -20
  56. package/dist/field/features/format/superscript/feature.server.js +4 -14
  57. package/dist/field/features/format/underline/feature.client.js +10 -20
  58. package/dist/field/features/format/underline/feature.server.js +4 -14
  59. package/dist/field/features/heading/feature.client.js +28 -37
  60. package/dist/field/features/heading/feature.server.js +12 -22
  61. package/dist/field/features/heading/markdownTransformer.js +8 -18
  62. package/dist/field/features/indent/feature.client.js +13 -23
  63. package/dist/field/features/indent/feature.server.js +4 -14
  64. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +2 -12
  65. package/dist/field/features/link/drawer/baseFields.js +6 -16
  66. package/dist/field/features/link/drawer/index.js +24 -74
  67. package/dist/field/features/link/drawer/types.js +2 -5
  68. package/dist/field/features/link/feature.client.js +29 -39
  69. package/dist/field/features/link/feature.server.js +22 -32
  70. package/dist/field/features/link/nodes/AutoLinkNode.js +10 -29
  71. package/dist/field/features/link/nodes/LinkNode.js +18 -45
  72. package/dist/field/features/link/nodes/types.js +2 -5
  73. package/dist/field/features/link/plugins/autoLink/index.js +33 -51
  74. package/dist/field/features/link/plugins/clickableLink/index.js +5 -20
  75. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +3 -13
  76. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +64 -114
  77. package/dist/field/features/link/plugins/floatingLinkEditor/index.js +7 -58
  78. package/dist/field/features/link/plugins/floatingLinkEditor/types.js +5 -5
  79. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +6 -14
  80. package/dist/field/features/link/plugins/link/index.js +21 -31
  81. package/dist/field/features/link/populationPromise.js +6 -16
  82. package/dist/field/features/lists/checklist/feature.client.js +21 -31
  83. package/dist/field/features/lists/checklist/feature.server.js +12 -22
  84. package/dist/field/features/lists/checklist/markdownTransformers.js +8 -18
  85. package/dist/field/features/lists/checklist/plugin/index.js +5 -20
  86. package/dist/field/features/lists/common/markdown.js +10 -28
  87. package/dist/field/features/lists/htmlConverter.js +9 -27
  88. package/dist/field/features/lists/orderedlist/feature.client.js +19 -29
  89. package/dist/field/features/lists/orderedlist/feature.server.js +12 -22
  90. package/dist/field/features/lists/orderedlist/markdownTransformer.js +8 -18
  91. package/dist/field/features/lists/plugin/index.js +5 -20
  92. package/dist/field/features/lists/unorderedlist/feature.client.js +19 -29
  93. package/dist/field/features/lists/unorderedlist/feature.server.js +12 -22
  94. package/dist/field/features/lists/unorderedlist/markdownTransformer.js +8 -18
  95. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +4 -14
  96. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +4 -14
  97. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +6 -16
  98. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +4 -14
  99. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +4 -14
  100. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +6 -16
  101. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +4 -14
  102. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +4 -14
  103. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +6 -16
  104. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +4 -14
  105. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +4 -14
  106. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +6 -16
  107. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +4 -14
  108. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +4 -14
  109. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +6 -16
  110. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +4 -14
  111. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +4 -14
  112. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +6 -16
  113. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +4 -14
  114. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -12
  115. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +6 -16
  116. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +16 -26
  117. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +5 -29
  118. package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js +2 -5
  119. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +7 -17
  120. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +9 -19
  121. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +5 -20
  122. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +11 -73
  123. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +4 -14
  124. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +4 -14
  125. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +6 -16
  126. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +4 -14
  127. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +4 -14
  128. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +6 -16
  129. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +4 -14
  130. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +4 -14
  131. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +6 -16
  132. package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +4 -14
  133. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +4 -14
  134. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +6 -16
  135. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +4 -14
  136. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +4 -14
  137. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +6 -16
  138. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +4 -14
  139. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +4 -14
  140. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +6 -16
  141. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +4 -14
  142. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -12
  143. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +6 -16
  144. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +4 -14
  145. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +4 -14
  146. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +6 -16
  147. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +4 -14
  148. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +4 -14
  149. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +6 -16
  150. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +4 -14
  151. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -12
  152. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +6 -16
  153. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +22 -32
  154. package/dist/field/features/migrations/slateToLexical/converter/index.js +14 -41
  155. package/dist/field/features/migrations/slateToLexical/converter/types.js +2 -5
  156. package/dist/field/features/migrations/slateToLexical/feature.client.js +7 -17
  157. package/dist/field/features/migrations/slateToLexical/feature.server.js +9 -19
  158. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +5 -20
  159. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +11 -73
  160. package/dist/field/features/paragraph/feature.client.js +16 -26
  161. package/dist/field/features/paragraph/feature.server.js +4 -14
  162. package/dist/field/features/relationship/drawer/commands.js +3 -13
  163. package/dist/field/features/relationship/drawer/index.js +24 -75
  164. package/dist/field/features/relationship/feature.client.js +15 -25
  165. package/dist/field/features/relationship/feature.server.js +8 -18
  166. package/dist/field/features/relationship/nodes/RelationshipNode.js +9 -71
  167. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +35 -86
  168. package/dist/field/features/relationship/plugins/index.js +22 -80
  169. package/dist/field/features/relationship/populationPromise.js +4 -14
  170. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +8 -59
  171. package/dist/field/features/types.js +2 -5
  172. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +36 -84
  173. package/dist/field/features/upload/component/index.js +47 -98
  174. package/dist/field/features/upload/drawer/commands.js +3 -13
  175. package/dist/field/features/upload/drawer/index.js +23 -74
  176. package/dist/field/features/upload/feature.client.js +13 -23
  177. package/dist/field/features/upload/feature.server.js +11 -21
  178. package/dist/field/features/upload/nodes/UploadNode.js +10 -72
  179. package/dist/field/features/upload/plugin/index.js +22 -81
  180. package/dist/field/features/upload/populationPromise.js +6 -16
  181. package/dist/field/features/upload/validate.js +9 -19
  182. package/dist/field/index.js +23 -74
  183. package/dist/field/lexical/EditorPlugin.js +5 -56
  184. package/dist/field/lexical/LexicalEditor.js +39 -94
  185. package/dist/field/lexical/LexicalProvider.js +15 -66
  186. package/dist/field/lexical/config/client/EditorConfigProvider.js +11 -69
  187. package/dist/field/lexical/config/client/default.js +4 -14
  188. package/dist/field/lexical/config/client/loader.js +5 -12
  189. package/dist/field/lexical/config/client/sanitize.js +3 -21
  190. package/dist/field/lexical/config/server/default.js +44 -68
  191. package/dist/field/lexical/config/server/loader.js +3 -21
  192. package/dist/field/lexical/config/server/sanitize.js +5 -23
  193. package/dist/field/lexical/config/types.js +2 -5
  194. package/dist/field/lexical/nodes/index.js +2 -12
  195. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +19 -70
  196. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +40 -98
  197. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +11 -34
  198. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +55 -105
  199. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +2 -5
  200. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +7 -58
  201. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +39 -64
  202. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +32 -97
  203. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +3 -21
  204. package/dist/field/lexical/plugins/SlashMenu/index.js +27 -77
  205. package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +8 -16
  206. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +35 -84
  207. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +2 -12
  208. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +2 -12
  209. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +18 -28
  210. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +4 -14
  211. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +52 -102
  212. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +8 -18
  213. package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +2 -12
  214. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +4 -14
  215. package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +2 -12
  216. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +2 -12
  217. package/dist/field/lexical/theme/EditorTheme.js +3 -13
  218. package/dist/field/lexical/ui/ContentEditable.js +6 -57
  219. package/dist/field/lexical/ui/icons/AI/index.js +7 -22
  220. package/dist/field/lexical/ui/icons/AlignCenter/index.js +6 -21
  221. package/dist/field/lexical/ui/icons/AlignJustify/index.js +6 -21
  222. package/dist/field/lexical/ui/icons/AlignLeft/index.js +6 -21
  223. package/dist/field/lexical/ui/icons/AlignRight/index.js +6 -21
  224. package/dist/field/lexical/ui/icons/Block/index.js +6 -21
  225. package/dist/field/lexical/ui/icons/Blockquote/index.js +4 -19
  226. package/dist/field/lexical/ui/icons/Bold/index.js +4 -19
  227. package/dist/field/lexical/ui/icons/Checklist/index.js +5 -20
  228. package/dist/field/lexical/ui/icons/Code/index.js +5 -20
  229. package/dist/field/lexical/ui/icons/CodeBlock/index.js +5 -20
  230. package/dist/field/lexical/ui/icons/H1/index.js +4 -19
  231. package/dist/field/lexical/ui/icons/H2/index.js +4 -19
  232. package/dist/field/lexical/ui/icons/H3/index.js +4 -19
  233. package/dist/field/lexical/ui/icons/H4/index.js +4 -19
  234. package/dist/field/lexical/ui/icons/H5/index.js +4 -19
  235. package/dist/field/lexical/ui/icons/H6/index.js +4 -19
  236. package/dist/field/lexical/ui/icons/IndentDecrease/index.js +7 -22
  237. package/dist/field/lexical/ui/icons/IndentIncrease/index.js +7 -22
  238. package/dist/field/lexical/ui/icons/Italic/index.js +4 -19
  239. package/dist/field/lexical/ui/icons/Link/index.js +7 -22
  240. package/dist/field/lexical/ui/icons/OrderedList/index.js +8 -23
  241. package/dist/field/lexical/ui/icons/Relationship/index.js +7 -22
  242. package/dist/field/lexical/ui/icons/Strikethrough/index.js +5 -20
  243. package/dist/field/lexical/ui/icons/Subscript/index.js +4 -19
  244. package/dist/field/lexical/ui/icons/Superscript/index.js +4 -19
  245. package/dist/field/lexical/ui/icons/Text/index.js +4 -19
  246. package/dist/field/lexical/ui/icons/Underline/index.js +5 -20
  247. package/dist/field/lexical/ui/icons/UnorderedList/index.js +9 -24
  248. package/dist/field/lexical/ui/icons/Upload/index.js +6 -21
  249. package/dist/field/lexical/utils/canUseDOM.js +2 -12
  250. package/dist/field/lexical/utils/cloneDeep.js +2 -12
  251. package/dist/field/lexical/utils/environment.js +13 -51
  252. package/dist/field/lexical/utils/getDOMRangeRect.js +2 -12
  253. package/dist/field/lexical/utils/getSelectedNode.js +5 -15
  254. package/dist/field/lexical/utils/guard.js +2 -12
  255. package/dist/field/lexical/utils/invariant.js +2 -12
  256. package/dist/field/lexical/utils/joinClasses.js +2 -12
  257. package/dist/field/lexical/utils/markdown/createBlockNode.js +2 -12
  258. package/dist/field/lexical/utils/nodeFormat.js +17 -61
  259. package/dist/field/lexical/utils/point.js +3 -21
  260. package/dist/field/lexical/utils/rect.js +4 -14
  261. package/dist/field/lexical/utils/setFloatingElemPosition.js +5 -12
  262. package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +2 -12
  263. package/dist/field/lexical/utils/swipe.js +5 -29
  264. package/dist/field/lexical/utils/url.js +3 -21
  265. package/dist/generateComponentMap.js +10 -25
  266. package/dist/generateSchemaMap.js +4 -14
  267. package/dist/index.js +102 -489
  268. package/dist/populate/defaultValue.js +3 -21
  269. package/dist/populate/populate.js +2 -12
  270. package/dist/populate/recurseNestedFields.js +4 -14
  271. package/dist/populate/richTextRelationshipPromise.js +3 -21
  272. package/dist/types.js +2 -5
  273. package/dist/useLexicalFeature.js +6 -16
  274. package/dist/validate/index.js +6 -16
  275. package/dist/validate/validateNodes.js +2 -12
  276. package/package.json +7 -7
@@ -1,113 +1,63 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "FloatingSelectToolbarPlugin", {
7
- enumerable: true,
8
- get: function() {
9
- return FloatingSelectToolbarPlugin;
10
- }
11
- });
12
- const _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
13
- const _utils = require("@lexical/utils");
14
- const _lexical = require("lexical");
15
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
16
- const _reactdom = require("react-dom");
17
- const _EditorConfigProvider = require("../../config/client/EditorConfigProvider");
18
- const _getDOMRangeRect = require("../../utils/getDOMRangeRect");
19
- const _setFloatingElemPosition = require("../../utils/setFloatingElemPosition");
20
- const _ToolbarButton = require("./ToolbarButton");
21
- const _ToolbarDropdown = require("./ToolbarDropdown");
22
- require("./index.scss");
23
- function _getRequireWildcardCache(nodeInterop) {
24
- if (typeof WeakMap !== "function") return null;
25
- var cacheBabelInterop = new WeakMap();
26
- var cacheNodeInterop = new WeakMap();
27
- return (_getRequireWildcardCache = function(nodeInterop) {
28
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
29
- })(nodeInterop);
30
- }
31
- function _interop_require_wildcard(obj, nodeInterop) {
32
- if (!nodeInterop && obj && obj.__esModule) {
33
- return obj;
34
- }
35
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
36
- return {
37
- default: obj
38
- };
39
- }
40
- var cache = _getRequireWildcardCache(nodeInterop);
41
- if (cache && cache.has(obj)) {
42
- return cache.get(obj);
43
- }
44
- var newObj = {
45
- __proto__: null
46
- };
47
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
48
- for(var key in obj){
49
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
50
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
51
- if (desc && (desc.get || desc.set)) {
52
- Object.defineProperty(newObj, key, desc);
53
- } else {
54
- newObj[key] = obj[key];
55
- }
56
- }
57
- }
58
- newObj.default = obj;
59
- if (cache) {
60
- cache.set(obj, newObj);
61
- }
62
- return newObj;
63
- }
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
+ import { mergeRegister } from '@lexical/utils';
4
+ import { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, SELECTION_CHANGE_COMMAND } from 'lexical';
5
+ import { useCallback, useEffect, useRef, useState } from 'react';
6
+ import * as React from 'react';
7
+ import { createPortal } from 'react-dom';
8
+ import { useEditorConfigContext } from '../../config/client/EditorConfigProvider';
9
+ import { getDOMRangeRect } from '../../utils/getDOMRangeRect';
10
+ import { setFloatingElemPosition } from '../../utils/setFloatingElemPosition';
11
+ import { ToolbarButton } from './ToolbarButton';
12
+ import { ToolbarDropdown } from './ToolbarDropdown';
13
+ import './index.scss';
64
14
  function ButtonSectionEntry({ anchorElem, editor, entry }) {
65
15
  if (entry.Component) {
66
- return entry?.Component && /*#__PURE__*/ _react.createElement(entry.Component, {
16
+ return entry?.Component && /*#__PURE__*/ React.createElement(entry.Component, {
67
17
  anchorElem: anchorElem,
68
18
  editor: editor,
69
19
  entry: entry,
70
20
  key: entry.key
71
21
  });
72
22
  }
73
- return /*#__PURE__*/ _react.createElement(_ToolbarButton.ToolbarButton, {
23
+ return /*#__PURE__*/ React.createElement(ToolbarButton, {
74
24
  entry: entry,
75
25
  key: entry.key
76
- }, entry?.ChildComponent && /*#__PURE__*/ _react.createElement(entry.ChildComponent, null));
26
+ }, entry?.ChildComponent && /*#__PURE__*/ React.createElement(entry.ChildComponent, null));
77
27
  }
78
28
  function ToolbarSection({ anchorElem, editor, index, section }) {
79
- const { editorConfig } = (0, _EditorConfigProvider.useEditorConfigContext)();
29
+ const { editorConfig } = useEditorConfigContext();
80
30
  const Icon = section?.type === 'dropdown' && section.entries.length && section.ChildComponent ? section.ChildComponent : null;
81
- return /*#__PURE__*/ _react.createElement("div", {
31
+ return /*#__PURE__*/ React.createElement("div", {
82
32
  className: `floating-select-toolbar-popup__section floating-select-toolbar-popup__section-${section.key}`,
83
33
  key: section.key
84
- }, section.type === 'dropdown' && section.entries.length && (Icon ? /*#__PURE__*/ _react.createElement(_ToolbarDropdown.ToolbarDropdown, {
34
+ }, section.type === 'dropdown' && section.entries.length && (Icon ? /*#__PURE__*/ React.createElement(ToolbarDropdown, {
85
35
  Icon: Icon,
86
36
  anchorElem: anchorElem,
87
37
  editor: editor,
88
38
  entries: section.entries,
89
39
  sectionKey: section.key
90
- }) : /*#__PURE__*/ _react.createElement(_ToolbarDropdown.ToolbarDropdown, {
40
+ }) : /*#__PURE__*/ React.createElement(ToolbarDropdown, {
91
41
  anchorElem: anchorElem,
92
42
  editor: editor,
93
43
  entries: section.entries,
94
44
  sectionKey: section.key
95
45
  })), section.type === 'buttons' && section.entries.length && section.entries.map((entry)=>{
96
- return /*#__PURE__*/ _react.createElement(ButtonSectionEntry, {
46
+ return /*#__PURE__*/ React.createElement(ButtonSectionEntry, {
97
47
  anchorElem: anchorElem,
98
48
  editor: editor,
99
49
  entry: entry,
100
50
  key: entry.key
101
51
  });
102
- }), index < editorConfig.features.floatingSelectToolbar?.sections.length - 1 && /*#__PURE__*/ _react.createElement("div", {
52
+ }), index < editorConfig.features.floatingSelectToolbar?.sections.length - 1 && /*#__PURE__*/ React.createElement("div", {
103
53
  className: "divider"
104
54
  }));
105
55
  }
106
56
  function FloatingSelectToolbar({ anchorElem, editor }) {
107
- const popupCharStylesEditorRef = (0, _react.useRef)(null);
108
- const caretRef = (0, _react.useRef)(null);
109
- const { editorConfig } = (0, _EditorConfigProvider.useEditorConfigContext)();
110
- const closeFloatingToolbar = (0, _react.useCallback)(()=>{
57
+ const popupCharStylesEditorRef = useRef(null);
58
+ const caretRef = useRef(null);
59
+ const { editorConfig } = useEditorConfigContext();
60
+ const closeFloatingToolbar = useCallback(()=>{
111
61
  if (popupCharStylesEditorRef?.current) {
112
62
  const isOpacityZero = popupCharStylesEditorRef.current.style.opacity === '0';
113
63
  const isPointerEventsNone = popupCharStylesEditorRef.current.style.pointerEvents === 'none';
@@ -121,7 +71,7 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
121
71
  }, [
122
72
  popupCharStylesEditorRef
123
73
  ]);
124
- const mouseMoveListener = (0, _react.useCallback)((e)=>{
74
+ const mouseMoveListener = useCallback((e)=>{
125
75
  if (popupCharStylesEditorRef?.current && (e.buttons === 1 || e.buttons === 3)) {
126
76
  const isOpacityZero = popupCharStylesEditorRef.current.style.opacity === '0';
127
77
  const isPointerEventsNone = popupCharStylesEditorRef.current.style.pointerEvents === 'none';
@@ -139,7 +89,7 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
139
89
  }, [
140
90
  closeFloatingToolbar
141
91
  ]);
142
- const mouseUpListener = (0, _react.useCallback)(()=>{
92
+ const mouseUpListener = useCallback(()=>{
143
93
  if (popupCharStylesEditorRef?.current) {
144
94
  if (popupCharStylesEditorRef.current.style.opacity !== '1') {
145
95
  popupCharStylesEditorRef.current.style.opacity = '1';
@@ -151,7 +101,7 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
151
101
  }, [
152
102
  popupCharStylesEditorRef
153
103
  ]);
154
- (0, _react.useEffect)(()=>{
104
+ useEffect(()=>{
155
105
  document.addEventListener('mousemove', mouseMoveListener);
156
106
  document.addEventListener('mouseup', mouseUpListener);
157
107
  return ()=>{
@@ -163,8 +113,8 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
163
113
  mouseMoveListener,
164
114
  mouseUpListener
165
115
  ]);
166
- const updateTextFormatFloatingToolbar = (0, _react.useCallback)(()=>{
167
- const selection = (0, _lexical.$getSelection)();
116
+ const updateTextFormatFloatingToolbar = useCallback(()=>{
117
+ const selection = $getSelection();
168
118
  const popupCharStylesEditorElem = popupCharStylesEditorRef.current;
169
119
  const nativeSelection = window.getSelection();
170
120
  if (popupCharStylesEditorElem === null) {
@@ -172,17 +122,17 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
172
122
  }
173
123
  const rootElement = editor.getRootElement();
174
124
  if (selection !== null && nativeSelection !== null && !nativeSelection.isCollapsed && rootElement !== null && rootElement.contains(nativeSelection.anchorNode)) {
175
- const rangeRect = (0, _getDOMRangeRect.getDOMRangeRect)(nativeSelection, rootElement);
176
- (0, _setFloatingElemPosition.setFloatingElemPosition)(rangeRect, popupCharStylesEditorElem, anchorElem, 'center');
125
+ const rangeRect = getDOMRangeRect(nativeSelection, rootElement);
126
+ setFloatingElemPosition(rangeRect, popupCharStylesEditorElem, anchorElem, 'center');
177
127
  if (caretRef.current) {
178
- (0, _setFloatingElemPosition.setFloatingElemPosition)(rangeRect, caretRef.current, popupCharStylesEditorElem, 'center', 10, 5, true);
128
+ setFloatingElemPosition(rangeRect, caretRef.current, popupCharStylesEditorElem, 'center', 10, 5, true);
179
129
  }
180
130
  }
181
131
  }, [
182
132
  editor,
183
133
  anchorElem
184
134
  ]);
185
- (0, _react.useEffect)(()=>{
135
+ useEffect(()=>{
186
136
  const scrollerElem = anchorElem.parentElement;
187
137
  const update = ()=>{
188
138
  editor.getEditorState().read(()=>{
@@ -204,30 +154,30 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
204
154
  updateTextFormatFloatingToolbar,
205
155
  anchorElem
206
156
  ]);
207
- (0, _react.useEffect)(()=>{
157
+ useEffect(()=>{
208
158
  editor.getEditorState().read(()=>{
209
159
  updateTextFormatFloatingToolbar();
210
160
  });
211
- return (0, _utils.mergeRegister)(editor.registerUpdateListener(({ editorState })=>{
161
+ return mergeRegister(editor.registerUpdateListener(({ editorState })=>{
212
162
  editorState.read(()=>{
213
163
  updateTextFormatFloatingToolbar();
214
164
  });
215
- }), editor.registerCommand(_lexical.SELECTION_CHANGE_COMMAND, ()=>{
165
+ }), editor.registerCommand(SELECTION_CHANGE_COMMAND, ()=>{
216
166
  updateTextFormatFloatingToolbar();
217
167
  return false;
218
- }, _lexical.COMMAND_PRIORITY_LOW));
168
+ }, COMMAND_PRIORITY_LOW));
219
169
  }, [
220
170
  editor,
221
171
  updateTextFormatFloatingToolbar
222
172
  ]);
223
- return /*#__PURE__*/ _react.createElement("div", {
173
+ return /*#__PURE__*/ React.createElement("div", {
224
174
  className: "floating-select-toolbar-popup",
225
175
  ref: popupCharStylesEditorRef
226
- }, /*#__PURE__*/ _react.createElement("div", {
176
+ }, /*#__PURE__*/ React.createElement("div", {
227
177
  className: "caret",
228
178
  ref: caretRef
229
- }), editor.isEditable() && /*#__PURE__*/ _react.createElement(_react.Fragment, null, editorConfig?.features && editorConfig.features?.floatingSelectToolbar?.sections.map((section, i)=>{
230
- return /*#__PURE__*/ _react.createElement(ToolbarSection, {
179
+ }), editor.isEditable() && /*#__PURE__*/ React.createElement(React.Fragment, null, editorConfig?.features && editorConfig.features?.floatingSelectToolbar?.sections.map((section, i)=>{
180
+ return /*#__PURE__*/ React.createElement(ToolbarSection, {
231
181
  anchorElem: anchorElem,
232
182
  editor: editor,
233
183
  index: i,
@@ -237,28 +187,28 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
237
187
  })));
238
188
  }
239
189
  function useFloatingTextFormatToolbar(editor, anchorElem) {
240
- const [isText, setIsText] = (0, _react.useState)(false);
241
- const updatePopup = (0, _react.useCallback)(()=>{
190
+ const [isText, setIsText] = useState(false);
191
+ const updatePopup = useCallback(()=>{
242
192
  editor.getEditorState().read(()=>{
243
193
  // Should not to pop up the floating toolbar when using IME input
244
194
  if (editor.isComposing()) {
245
195
  return;
246
196
  }
247
- const selection = (0, _lexical.$getSelection)();
197
+ const selection = $getSelection();
248
198
  const nativeSelection = window.getSelection();
249
199
  const rootElement = editor.getRootElement();
250
- if (nativeSelection !== null && (!(0, _lexical.$isRangeSelection)(selection) || rootElement === null || !rootElement.contains(nativeSelection.anchorNode))) {
200
+ if (nativeSelection !== null && (!$isRangeSelection(selection) || rootElement === null || !rootElement.contains(nativeSelection.anchorNode))) {
251
201
  setIsText(false);
252
202
  return;
253
203
  }
254
- if (!(0, _lexical.$isRangeSelection)(selection)) {
204
+ if (!$isRangeSelection(selection)) {
255
205
  return;
256
206
  }
257
207
  if (selection.getTextContent() !== '') {
258
208
  const nodes = selection.getNodes();
259
209
  let foundNodeWithText = false;
260
210
  for (const node of nodes){
261
- if ((0, _lexical.$isTextNode)(node)) {
211
+ if ($isTextNode(node)) {
262
212
  setIsText(true);
263
213
  foundNodeWithText = true;
264
214
  break;
@@ -279,7 +229,7 @@ function useFloatingTextFormatToolbar(editor, anchorElem) {
279
229
  }, [
280
230
  editor
281
231
  ]);
282
- (0, _react.useEffect)(()=>{
232
+ useEffect(()=>{
283
233
  document.addEventListener('selectionchange', updatePopup);
284
234
  document.addEventListener('mouseup', updatePopup);
285
235
  return ()=>{
@@ -289,8 +239,8 @@ function useFloatingTextFormatToolbar(editor, anchorElem) {
289
239
  }, [
290
240
  updatePopup
291
241
  ]);
292
- (0, _react.useEffect)(()=>{
293
- return (0, _utils.mergeRegister)(editor.registerUpdateListener(()=>{
242
+ useEffect(()=>{
243
+ return mergeRegister(editor.registerUpdateListener(()=>{
294
244
  updatePopup();
295
245
  }), editor.registerRootListener(()=>{
296
246
  if (editor.getRootElement() === null) {
@@ -304,14 +254,14 @@ function useFloatingTextFormatToolbar(editor, anchorElem) {
304
254
  if (!isText) {
305
255
  return null;
306
256
  }
307
- return /*#__PURE__*/ (0, _reactdom.createPortal)(/*#__PURE__*/ _react.createElement(FloatingSelectToolbar, {
257
+ return /*#__PURE__*/ createPortal(/*#__PURE__*/ React.createElement(FloatingSelectToolbar, {
308
258
  anchorElem: anchorElem,
309
259
  editor: editor
310
260
  }), anchorElem);
311
261
  }
312
- function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
313
- const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
262
+ export function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
263
+ const [editor] = useLexicalComposerContext();
314
264
  return useFloatingTextFormatToolbar(editor, anchorElem);
315
265
  }
316
266
 
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbiwgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5pbXBvcnQgeyBnZXRET01SYW5nZVJlY3QgfSBmcm9tICcuLi8uLi91dGlscy9nZXRET01SYW5nZVJlY3QnXG5pbXBvcnQgeyBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3NldEZsb2F0aW5nRWxlbVBvc2l0aW9uJ1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vVG9vbGJhckJ1dHRvbidcbmltcG9ydCB7IFRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4vVG9vbGJhckRyb3Bkb3duJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmZ1bmN0aW9uIEJ1dHRvblNlY3Rpb25FbnRyeSh7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbiAgZW50cnksXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBlbnRyeTogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5XG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgIHJldHVybiAoXG4gICAgICBlbnRyeT8uQ29tcG9uZW50ICYmIChcbiAgICAgICAgPGVudHJ5LkNvbXBvbmVudCBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0gLz5cbiAgICAgIClcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxUb29sYmFyQnV0dG9uIGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9PlxuICAgICAge2VudHJ5Py5DaGlsZENvbXBvbmVudCAmJiA8ZW50cnkuQ2hpbGRDb21wb25lbnQgLz59XG4gICAgPC9Ub29sYmFyQnV0dG9uPlxuICApXG59XG5cbmZ1bmN0aW9uIFRvb2xiYXJTZWN0aW9uKHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxuICBpbmRleCxcbiAgc2VjdGlvbixcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGluZGV4OiBudW1iZXJcbiAgc2VjdGlvbjogRmxvYXRpbmdUb29sYmFyU2VjdGlvblxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBjb25zdCBJY29uID1cbiAgICBzZWN0aW9uPy50eXBlID09PSAnZHJvcGRvd24nICYmIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiYgc2VjdGlvbi5DaGlsZENvbXBvbmVudFxuICAgICAgPyBzZWN0aW9uLkNoaWxkQ29tcG9uZW50XG4gICAgICA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17YGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uIGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uLSR7c2VjdGlvbi5rZXl9YH1cbiAgICAgIGtleT17c2VjdGlvbi5rZXl9XG4gICAgPlxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2Ryb3Bkb3duJyAmJlxuICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgIChJY29uID8gKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBlbnRyaWVzPXtzZWN0aW9uLmVudHJpZXN9XG4gICAgICAgICAgICBzZWN0aW9uS2V5PXtzZWN0aW9uLmtleX1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGVudHJpZXM9e3NlY3Rpb24uZW50cmllc31cbiAgICAgICAgICAgIHNlY3Rpb25LZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2J1dHRvbnMnICYmXG4gICAgICAgIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiZcbiAgICAgICAgc2VjdGlvbi5lbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJ1dHRvblNlY3Rpb25FbnRyeVxuICAgICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICBrZXk9e2VudHJ5LmtleX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIHtpbmRleCA8IGVkaXRvckNvbmZpZy5mZWF0dXJlcy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5mdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXIoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNhcmV0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcblxuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG5cbiAgY29uc3QgY2xvc2VGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgY29uc3QgaXNPcGFjaXR5WmVybyA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuXG4gICAgICBpZiAoIWlzT3BhY2l0eVplcm8pIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcwJ1xuICAgICAgfVxuICAgICAgaWYgKCFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIGNvbnN0IG1vdXNlTW92ZUxpc3RlbmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQgJiYgKGUuYnV0dG9ucyA9PT0gMSB8fCBlLmJ1dHRvbnMgPT09IDMpKSB7XG4gICAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuICAgICAgICBpZiAoIWlzT3BhY2l0eVplcm8gfHwgIWlzUG9pbnRlckV2ZW50c05vbmUpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIHBvcHVwXG4gICAgICAgICAgY29uc3QgeCA9IGUuY2xpZW50WFxuICAgICAgICAgIGNvbnN0IHkgPSBlLmNsaWVudFlcbiAgICAgICAgICBjb25zdCBlbGVtZW50VW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSlcbiAgICAgICAgICBpZiAoIXBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LmNvbnRhaW5zKGVsZW1lbnRVbmRlck1vdXNlKSkge1xuICAgICAgICAgICAgLy8gTW91c2UgaXMgbm90IG92ZXIgdGhlIHRhcmdldCBlbGVtZW50ID0+IG5vdCBhIG5vcm1hbCBjbGljaywgYnV0IHByb2JhYmx5IGEgZHJhZ1xuICAgICAgICAgICAgY2xvc2VGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlRmxvYXRpbmdUb29sYmFyXSxcbiAgKVxuXG4gIGNvbnN0IG1vdXNlVXBMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50KSB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSAhPT0gJzEnKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzICE9PSAnYXV0bycpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYsIG1vdXNlTW92ZUxpc3RlbmVyLCBtb3VzZVVwTGlzdGVuZXJdKVxuXG4gIGNvbnN0IHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG5cbiAgICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnRcbiAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcblxuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICFuYXRpdmVTZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiZcbiAgICAgIHJvb3RFbGVtZW50ICE9PSBudWxsICYmXG4gICAgICByb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHJhbmdlUmVjdCA9IGdldERPTVJhbmdlUmVjdChuYXRpdmVTZWxlY3Rpb24sIHJvb3RFbGVtZW50KVxuXG4gICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihyYW5nZVJlY3QsIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIGFuY2hvckVsZW0sICdjZW50ZXInKVxuXG4gICAgICBpZiAoY2FyZXRSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihcbiAgICAgICAgICByYW5nZVJlY3QsIC8vIHNlbGVjdGlvbiB0byBwb3NpdGlvbiBhcm91bmRcbiAgICAgICAgICBjYXJldFJlZi5jdXJyZW50LCAvLyB3aGF0IHRvIHBvc2l0aW9uXG4gICAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgLy8gYW5jaG9yIGVsZW1cbiAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAxMCxcbiAgICAgICAgICA1LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgaWYgKHNjcm9sbGVyRWxlbSkge1xuICAgICAgc2Nyb2xsZXJFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgICAgc2Nyb2xsZXJFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICB9KVxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKHsgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBlZGl0b3JTdGF0ZS5yZWFkKCgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcl0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwXCIgcmVmPXtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZ9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJldFwiIHJlZj17Y2FyZXRSZWZ9IC8+XG4gICAgICB7ZWRpdG9yLmlzRWRpdGFibGUoKSAmJiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7ZWRpdG9yQ29uZmlnPy5mZWF0dXJlcyAmJlxuICAgICAgICAgICAgZWRpdG9yQ29uZmlnLmZlYXR1cmVzPy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sYmFyU2VjdGlvblxuICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgICAgc2VjdGlvbj17c2VjdGlvbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbik6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtpc1RleHQsIHNldElzVGV4dF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1cGRhdGVQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIC8vIFNob3VsZCBub3QgdG8gcG9wIHVwIHRoZSBmbG9hdGluZyB0b29sYmFyIHdoZW4gdXNpbmcgSU1FIGlucHV0XG4gICAgICBpZiAoZWRpdG9yLmlzQ29tcG9zaW5nKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgICAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICByb290RWxlbWVudCA9PT0gbnVsbCB8fFxuICAgICAgICAgICFyb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSkpXG4gICAgICApIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0aW9uLmdldFRleHRDb250ZW50KCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmdldE5vZGVzKClcbiAgICAgICAgbGV0IGZvdW5kTm9kZVdpdGhUZXh0ID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgaWYgKCRpc1RleHROb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICBzZXRJc1RleHQodHJ1ZSlcbiAgICAgICAgICAgIGZvdW5kTm9kZVdpdGhUZXh0ID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZE5vZGVXaXRoVGV4dCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdUZXh0Q29udGVudCA9IHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpLnJlcGxhY2UoL1xcbi9nLCAnJylcbiAgICAgIGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkgJiYgcmF3VGV4dENvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlUG9wdXApXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIHVwZGF0ZVBvcHVwKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVBvcHVwXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICB1cGRhdGVQb3B1cCgpXG4gICAgICB9KSxcbiAgICAgIGVkaXRvci5yZWdpc3RlclJvb3RMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIGlmIChlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVQb3B1cF0pXG5cbiAgaWYgKCFpc1RleHQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCg8RmxvYXRpbmdTZWxlY3RUb29sYmFyIGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSAvPiwgYW5jaG9yRWxlbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihlZGl0b3IsIGFuY2hvckVsZW0pXG59XG4iXSwibmFtZXMiOlsiRmxvYXRpbmdTZWxlY3RUb29sYmFyUGx1Z2luIiwiQnV0dG9uU2VjdGlvbkVudHJ5IiwiYW5jaG9yRWxlbSIsImVkaXRvciIsImVudHJ5IiwiQ29tcG9uZW50Iiwia2V5IiwiVG9vbGJhckJ1dHRvbiIsIkNoaWxkQ29tcG9uZW50IiwiVG9vbGJhclNlY3Rpb24iLCJpbmRleCIsInNlY3Rpb24iLCJlZGl0b3JDb25maWciLCJ1c2VFZGl0b3JDb25maWdDb250ZXh0IiwiSWNvbiIsInR5cGUiLCJlbnRyaWVzIiwibGVuZ3RoIiwiZGl2IiwiY2xhc3NOYW1lIiwiVG9vbGJhckRyb3Bkb3duIiwic2VjdGlvbktleSIsIm1hcCIsImZlYXR1cmVzIiwiZmxvYXRpbmdTZWxlY3RUb29sYmFyIiwic2VjdGlvbnMiLCJGbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYiLCJ1c2VSZWYiLCJjYXJldFJlZiIsImNsb3NlRmxvYXRpbmdUb29sYmFyIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwiaXNPcGFjaXR5WmVybyIsInN0eWxlIiwib3BhY2l0eSIsImlzUG9pbnRlckV2ZW50c05vbmUiLCJwb2ludGVyRXZlbnRzIiwibW91c2VNb3ZlTGlzdGVuZXIiLCJlIiwiYnV0dG9ucyIsIngiLCJjbGllbnRYIiwieSIsImNsaWVudFkiLCJlbGVtZW50VW5kZXJNb3VzZSIsImRvY3VtZW50IiwiZWxlbWVudEZyb21Qb2ludCIsImNvbnRhaW5zIiwibW91c2VVcExpc3RlbmVyIiwidXNlRWZmZWN0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsInBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0iLCJuYXRpdmVTZWxlY3Rpb24iLCJ3aW5kb3ciLCJnZXRTZWxlY3Rpb24iLCJyb290RWxlbWVudCIsImdldFJvb3RFbGVtZW50IiwiaXNDb2xsYXBzZWQiLCJhbmNob3JOb2RlIiwicmFuZ2VSZWN0IiwiZ2V0RE9NUmFuZ2VSZWN0Iiwic2V0RmxvYXRpbmdFbGVtUG9zaXRpb24iLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwidXBkYXRlIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwibWVyZ2VSZWdpc3RlciIsInJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIiLCJlZGl0b3JTdGF0ZSIsInJlZ2lzdGVyQ29tbWFuZCIsIlNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwicmVmIiwiaXNFZGl0YWJsZSIsIlJlYWN0IiwiRnJhZ21lbnQiLCJpIiwidXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhciIsImlzVGV4dCIsInNldElzVGV4dCIsInVzZVN0YXRlIiwidXBkYXRlUG9wdXAiLCJpc0NvbXBvc2luZyIsIiRpc1JhbmdlU2VsZWN0aW9uIiwiZ2V0VGV4dENvbnRlbnQiLCJub2RlcyIsImdldE5vZGVzIiwiZm91bmROb2RlV2l0aFRleHQiLCJub2RlIiwiJGlzVGV4dE5vZGUiLCJyYXdUZXh0Q29udGVudCIsInJlcGxhY2UiLCJyZWdpc3RlclJvb3RMaXN0ZW5lciIsImNyZWF0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
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbiwgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5pbXBvcnQgeyBnZXRET01SYW5nZVJlY3QgfSBmcm9tICcuLi8uLi91dGlscy9nZXRET01SYW5nZVJlY3QnXG5pbXBvcnQgeyBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3NldEZsb2F0aW5nRWxlbVBvc2l0aW9uJ1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vVG9vbGJhckJ1dHRvbidcbmltcG9ydCB7IFRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4vVG9vbGJhckRyb3Bkb3duJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmZ1bmN0aW9uIEJ1dHRvblNlY3Rpb25FbnRyeSh7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbiAgZW50cnksXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBlbnRyeTogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5XG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgIHJldHVybiAoXG4gICAgICBlbnRyeT8uQ29tcG9uZW50ICYmIChcbiAgICAgICAgPGVudHJ5LkNvbXBvbmVudCBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0gLz5cbiAgICAgIClcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxUb29sYmFyQnV0dG9uIGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9PlxuICAgICAge2VudHJ5Py5DaGlsZENvbXBvbmVudCAmJiA8ZW50cnkuQ2hpbGRDb21wb25lbnQgLz59XG4gICAgPC9Ub29sYmFyQnV0dG9uPlxuICApXG59XG5cbmZ1bmN0aW9uIFRvb2xiYXJTZWN0aW9uKHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxuICBpbmRleCxcbiAgc2VjdGlvbixcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGluZGV4OiBudW1iZXJcbiAgc2VjdGlvbjogRmxvYXRpbmdUb29sYmFyU2VjdGlvblxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBjb25zdCBJY29uID1cbiAgICBzZWN0aW9uPy50eXBlID09PSAnZHJvcGRvd24nICYmIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiYgc2VjdGlvbi5DaGlsZENvbXBvbmVudFxuICAgICAgPyBzZWN0aW9uLkNoaWxkQ29tcG9uZW50XG4gICAgICA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17YGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uIGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uLSR7c2VjdGlvbi5rZXl9YH1cbiAgICAgIGtleT17c2VjdGlvbi5rZXl9XG4gICAgPlxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2Ryb3Bkb3duJyAmJlxuICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgIChJY29uID8gKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBlbnRyaWVzPXtzZWN0aW9uLmVudHJpZXN9XG4gICAgICAgICAgICBzZWN0aW9uS2V5PXtzZWN0aW9uLmtleX1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGVudHJpZXM9e3NlY3Rpb24uZW50cmllc31cbiAgICAgICAgICAgIHNlY3Rpb25LZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2J1dHRvbnMnICYmXG4gICAgICAgIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiZcbiAgICAgICAgc2VjdGlvbi5lbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJ1dHRvblNlY3Rpb25FbnRyeVxuICAgICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICBrZXk9e2VudHJ5LmtleX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIHtpbmRleCA8IGVkaXRvckNvbmZpZy5mZWF0dXJlcy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5mdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXIoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNhcmV0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcblxuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG5cbiAgY29uc3QgY2xvc2VGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgY29uc3QgaXNPcGFjaXR5WmVybyA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuXG4gICAgICBpZiAoIWlzT3BhY2l0eVplcm8pIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcwJ1xuICAgICAgfVxuICAgICAgaWYgKCFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIGNvbnN0IG1vdXNlTW92ZUxpc3RlbmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQgJiYgKGUuYnV0dG9ucyA9PT0gMSB8fCBlLmJ1dHRvbnMgPT09IDMpKSB7XG4gICAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuICAgICAgICBpZiAoIWlzT3BhY2l0eVplcm8gfHwgIWlzUG9pbnRlckV2ZW50c05vbmUpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIHBvcHVwXG4gICAgICAgICAgY29uc3QgeCA9IGUuY2xpZW50WFxuICAgICAgICAgIGNvbnN0IHkgPSBlLmNsaWVudFlcbiAgICAgICAgICBjb25zdCBlbGVtZW50VW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSlcbiAgICAgICAgICBpZiAoIXBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LmNvbnRhaW5zKGVsZW1lbnRVbmRlck1vdXNlKSkge1xuICAgICAgICAgICAgLy8gTW91c2UgaXMgbm90IG92ZXIgdGhlIHRhcmdldCBlbGVtZW50ID0+IG5vdCBhIG5vcm1hbCBjbGljaywgYnV0IHByb2JhYmx5IGEgZHJhZ1xuICAgICAgICAgICAgY2xvc2VGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlRmxvYXRpbmdUb29sYmFyXSxcbiAgKVxuXG4gIGNvbnN0IG1vdXNlVXBMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50KSB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSAhPT0gJzEnKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzICE9PSAnYXV0bycpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYsIG1vdXNlTW92ZUxpc3RlbmVyLCBtb3VzZVVwTGlzdGVuZXJdKVxuXG4gIGNvbnN0IHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG5cbiAgICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnRcbiAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcblxuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICFuYXRpdmVTZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiZcbiAgICAgIHJvb3RFbGVtZW50ICE9PSBudWxsICYmXG4gICAgICByb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHJhbmdlUmVjdCA9IGdldERPTVJhbmdlUmVjdChuYXRpdmVTZWxlY3Rpb24sIHJvb3RFbGVtZW50KVxuXG4gICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihyYW5nZVJlY3QsIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIGFuY2hvckVsZW0sICdjZW50ZXInKVxuXG4gICAgICBpZiAoY2FyZXRSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihcbiAgICAgICAgICByYW5nZVJlY3QsIC8vIHNlbGVjdGlvbiB0byBwb3NpdGlvbiBhcm91bmRcbiAgICAgICAgICBjYXJldFJlZi5jdXJyZW50LCAvLyB3aGF0IHRvIHBvc2l0aW9uXG4gICAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgLy8gYW5jaG9yIGVsZW1cbiAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAxMCxcbiAgICAgICAgICA1LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgaWYgKHNjcm9sbGVyRWxlbSkge1xuICAgICAgc2Nyb2xsZXJFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgICAgc2Nyb2xsZXJFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICB9KVxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKHsgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBlZGl0b3JTdGF0ZS5yZWFkKCgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcl0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwXCIgcmVmPXtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZ9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJldFwiIHJlZj17Y2FyZXRSZWZ9IC8+XG4gICAgICB7ZWRpdG9yLmlzRWRpdGFibGUoKSAmJiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7ZWRpdG9yQ29uZmlnPy5mZWF0dXJlcyAmJlxuICAgICAgICAgICAgZWRpdG9yQ29uZmlnLmZlYXR1cmVzPy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sYmFyU2VjdGlvblxuICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgICAgc2VjdGlvbj17c2VjdGlvbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbik6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtpc1RleHQsIHNldElzVGV4dF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1cGRhdGVQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIC8vIFNob3VsZCBub3QgdG8gcG9wIHVwIHRoZSBmbG9hdGluZyB0b29sYmFyIHdoZW4gdXNpbmcgSU1FIGlucHV0XG4gICAgICBpZiAoZWRpdG9yLmlzQ29tcG9zaW5nKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgICAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICByb290RWxlbWVudCA9PT0gbnVsbCB8fFxuICAgICAgICAgICFyb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSkpXG4gICAgICApIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0aW9uLmdldFRleHRDb250ZW50KCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmdldE5vZGVzKClcbiAgICAgICAgbGV0IGZvdW5kTm9kZVdpdGhUZXh0ID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgaWYgKCRpc1RleHROb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICBzZXRJc1RleHQodHJ1ZSlcbiAgICAgICAgICAgIGZvdW5kTm9kZVdpdGhUZXh0ID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZE5vZGVXaXRoVGV4dCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdUZXh0Q29udGVudCA9IHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpLnJlcGxhY2UoL1xcbi9nLCAnJylcbiAgICAgIGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkgJiYgcmF3VGV4dENvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlUG9wdXApXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIHVwZGF0ZVBvcHVwKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVBvcHVwXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICB1cGRhdGVQb3B1cCgpXG4gICAgICB9KSxcbiAgICAgIGVkaXRvci5yZWdpc3RlclJvb3RMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIGlmIChlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVQb3B1cF0pXG5cbiAgaWYgKCFpc1RleHQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCg8RmxvYXRpbmdTZWxlY3RUb29sYmFyIGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSAvPiwgYW5jaG9yRWxlbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihlZGl0b3IsIGFuY2hvckVsZW0pXG59XG4iXSwibmFtZXMiOlsidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIm1lcmdlUmVnaXN0ZXIiLCIkZ2V0U2VsZWN0aW9uIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCIkaXNUZXh0Tm9kZSIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5EIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiY3JlYXRlUG9ydGFsIiwidXNlRWRpdG9yQ29uZmlnQ29udGV4dCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwiVG9vbGJhckJ1dHRvbiIsIlRvb2xiYXJEcm9wZG93biIsIkJ1dHRvblNlY3Rpb25FbnRyeSIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJlbnRyeSIsIkNvbXBvbmVudCIsImtleSIsIkNoaWxkQ29tcG9uZW50IiwiVG9vbGJhclNlY3Rpb24iLCJpbmRleCIsInNlY3Rpb24iLCJlZGl0b3JDb25maWciLCJJY29uIiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJzZWN0aW9uS2V5IiwibWFwIiwiZmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIkZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiIsImNhcmV0UmVmIiwiY2xvc2VGbG9hdGluZ1Rvb2xiYXIiLCJjdXJyZW50IiwiaXNPcGFjaXR5WmVybyIsInN0eWxlIiwib3BhY2l0eSIsImlzUG9pbnRlckV2ZW50c05vbmUiLCJwb2ludGVyRXZlbnRzIiwibW91c2VNb3ZlTGlzdGVuZXIiLCJlIiwiYnV0dG9ucyIsIngiLCJjbGllbnRYIiwieSIsImNsaWVudFkiLCJlbGVtZW50VW5kZXJNb3VzZSIsImRvY3VtZW50IiwiZWxlbWVudEZyb21Qb2ludCIsImNvbnRhaW5zIiwibW91c2VVcExpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyIiwic2VsZWN0aW9uIiwicG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSIsIm5hdGl2ZVNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJvb3RFbGVtZW50IiwiZ2V0Um9vdEVsZW1lbnQiLCJpc0NvbGxhcHNlZCIsImFuY2hvck5vZGUiLCJyYW5nZVJlY3QiLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwidXBkYXRlIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImVkaXRvclN0YXRlIiwicmVnaXN0ZXJDb21tYW5kIiwicmVmIiwiaXNFZGl0YWJsZSIsIkZyYWdtZW50IiwiaSIsInVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIiLCJpc1RleHQiLCJzZXRJc1RleHQiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiZ2V0VGV4dENvbnRlbnQiLCJub2RlcyIsImdldE5vZGVzIiwiZm91bmROb2RlV2l0aFRleHQiLCJub2RlIiwicmF3VGV4dENvbnRlbnQiLCJyZXBsYWNlIiwicmVnaXN0ZXJSb290TGlz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
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
1
+ export { };
5
2
 
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmFzZVNlbGVjdGlvbiwgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdUb29sYmFyU2VjdGlvbiA9XG4gIHwge1xuICAgICAgQ2hpbGRDb21wb25lbnQ/OiBSZWFjdC5GQ1xuICAgICAgZW50cmllczogQXJyYXk8RmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5PlxuICAgICAga2V5OiBzdHJpbmdcbiAgICAgIG9yZGVyPzogbnVtYmVyXG4gICAgICB0eXBlOiAnZHJvcGRvd24nXG4gICAgfVxuICB8IHtcbiAgICAgIGVudHJpZXM6IEFycmF5PEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeT5cbiAgICAgIGtleTogc3RyaW5nXG4gICAgICBvcmRlcj86IG51bWJlclxuICAgICAgdHlwZTogJ2J1dHRvbnMnXG4gICAgfVxuXG5leHBvcnQgdHlwZSBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnkgPSB7XG4gIENoaWxkQ29tcG9uZW50PzogUmVhY3QuRkNcbiAgLyoqIFVzZSBjb21wb25lbnQgdG8gaWdub3JlIHRoZSBjaGlsZHJlbiBhbmQgb25DbGljayBwcm9wZXJ0aWVzLiBJdCBkb2VzIG5vdCB1c2UgdGhlIGRlZmF1bHQsIHByZS1kZWZpbmVkIGZvcm1hdCBCdXR0b24gY29tcG9uZW50ICovXG4gIENvbXBvbmVudD86IFJlYWN0LkZDPHtcbiAgICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICAgIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICAgIGVudHJ5OiBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnlcbiAgfT5cbiAgaXNBY3RpdmU/OiAoeyBlZGl0b3IsIHNlbGVjdGlvbiB9OiB7IGVkaXRvcjogTGV4aWNhbEVkaXRvcjsgc2VsZWN0aW9uOiBCYXNlU2VsZWN0aW9uIH0pID0+IGJvb2xlYW5cbiAgaXNFbmFibGVkPzogKHtcbiAgICBlZGl0b3IsXG4gICAgc2VsZWN0aW9uLFxuICB9OiB7XG4gICAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gICAgc2VsZWN0aW9uOiBCYXNlU2VsZWN0aW9uXG4gIH0pID0+IGJvb2xlYW5cbiAga2V5OiBzdHJpbmdcbiAgLyoqIFRoZSBsYWJlbCBpcyBkaXNwbGF5ZWQgYXMgdGV4dCBpZiB0aGUgZW50cnkgaXMgcGFydCBvZiBhIGRyb3Bkb3duIHNlY3Rpb24gKi9cbiAgbGFiZWw/OiBzdHJpbmdcbiAgb25DbGljaz86ICh7IGVkaXRvciwgaXNBY3RpdmUgfTogeyBlZGl0b3I6IExleGljYWxFZGl0b3I7IGlzQWN0aXZlOiBib29sZWFuIH0pID0+IHZvaWRcbiAgb3JkZXI/OiBudW1iZXJcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsV0FxQkMifQ==
@@ -1,63 +1,12 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "MarkdownShortcutPlugin", {
7
- enumerable: true,
8
- get: function() {
9
- return MarkdownShortcutPlugin;
10
- }
11
- });
12
- const _LexicalMarkdownShortcutPlugin = require("@lexical/react/LexicalMarkdownShortcutPlugin");
13
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
14
- const _EditorConfigProvider = require("../../config/client/EditorConfigProvider");
15
- function _getRequireWildcardCache(nodeInterop) {
16
- if (typeof WeakMap !== "function") return null;
17
- var cacheBabelInterop = new WeakMap();
18
- var cacheNodeInterop = new WeakMap();
19
- return (_getRequireWildcardCache = function(nodeInterop) {
20
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
21
- })(nodeInterop);
22
- }
23
- function _interop_require_wildcard(obj, nodeInterop) {
24
- if (!nodeInterop && obj && obj.__esModule) {
25
- return obj;
26
- }
27
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
28
- return {
29
- default: obj
30
- };
31
- }
32
- var cache = _getRequireWildcardCache(nodeInterop);
33
- if (cache && cache.has(obj)) {
34
- return cache.get(obj);
35
- }
36
- var newObj = {
37
- __proto__: null
38
- };
39
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
40
- for(var key in obj){
41
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
42
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
43
- if (desc && (desc.get || desc.set)) {
44
- Object.defineProperty(newObj, key, desc);
45
- } else {
46
- newObj[key] = obj[key];
47
- }
48
- }
49
- }
50
- newObj.default = obj;
51
- if (cache) {
52
- cache.set(obj, newObj);
53
- }
54
- return newObj;
55
- }
56
- const MarkdownShortcutPlugin = ()=>{
57
- const { editorConfig } = (0, _EditorConfigProvider.useEditorConfigContext)();
58
- return /*#__PURE__*/ _react.createElement(_LexicalMarkdownShortcutPlugin.MarkdownShortcutPlugin, {
2
+ import { MarkdownShortcutPlugin as LexicalMarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin';
3
+ import * as React from 'react';
4
+ import { useEditorConfigContext } from '../../config/client/EditorConfigProvider';
5
+ export const MarkdownShortcutPlugin = ()=>{
6
+ const { editorConfig } = useEditorConfigContext();
7
+ return /*#__PURE__*/ React.createElement(LexicalMarkdownShortcutPlugin, {
59
8
  transformers: editorConfig.features.markdownTransformers
60
9
  });
61
10
  };
62
11
 
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvTWFya2Rvd25TaG9ydGN1dC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgeyBNYXJrZG93blNob3J0Y3V0UGx1Z2luIGFzIExleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4nXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5cbmV4cG9ydCBjb25zdCBNYXJrZG93blNob3J0Y3V0UGx1Z2luOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuXG4gIHJldHVybiA8TGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4gdHJhbnNmb3JtZXJzPXtlZGl0b3JDb25maWcuZmVhdHVyZXMubWFya2Rvd25UcmFuc2Zvcm1lcnN9IC8+XG59XG4iXSwibmFtZXMiOlsiTWFya2Rvd25TaG9ydGN1dFBsdWdpbiIsImVkaXRvckNvbmZpZyIsInVzZUVkaXRvckNvbmZpZ0NvbnRleHQiLCJMZXhpY2FsTWFya2Rvd25TaG9ydGN1dFBsdWdpbiIsInRyYW5zZm9ybWVycyIsImZlYXR1cmVzIiwibWFya2Rvd25UcmFuc2Zvcm1lcnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OzsrQkFNYUE7OztlQUFBQTs7OytDQUwyRDsrREFDakQ7c0NBRWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEMsTUFBTUEseUJBQW1DO0lBQzlDLE1BQU0sRUFBRUMsWUFBWSxFQUFFLEdBQUdDLElBQUFBLDRDQUFzQjtJQUUvQyxxQkFBTyxxQkFBQ0MscURBQTZCO1FBQUNDLGNBQWNILGFBQWFJLFFBQVEsQ0FBQ0Msb0JBQW9COztBQUNoRyJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvTWFya2Rvd25TaG9ydGN1dC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgeyBNYXJrZG93blNob3J0Y3V0UGx1Z2luIGFzIExleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4nXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5cbmV4cG9ydCBjb25zdCBNYXJrZG93blNob3J0Y3V0UGx1Z2luOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuXG4gIHJldHVybiA8TGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4gdHJhbnNmb3JtZXJzPXtlZGl0b3JDb25maWcuZmVhdHVyZXMubWFya2Rvd25UcmFuc2Zvcm1lcnN9IC8+XG59XG4iXSwibmFtZXMiOlsiTWFya2Rvd25TaG9ydGN1dFBsdWdpbiIsIkxleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIiwiUmVhY3QiLCJ1c2VFZGl0b3JDb25maWdDb250ZXh0IiwiZWRpdG9yQ29uZmlnIiwidHJhbnNmb3JtZXJzIiwiZmVhdHVyZXMiLCJtYXJrZG93blRyYW5zZm9ybWVycyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxTQUFTQSwwQkFBMEJDLDZCQUE2QixRQUFRLCtDQUE4QztBQUN0SCxZQUFZQyxXQUFXLFFBQU87QUFFOUIsU0FBU0Msc0JBQXNCLFFBQVEsMkNBQTBDO0FBRWpGLE9BQU8sTUFBTUgseUJBQW1DO0lBQzlDLE1BQU0sRUFBRUksWUFBWSxFQUFFLEdBQUdEO0lBRXpCLHFCQUFPLG9CQUFDRjtRQUE4QkksY0FBY0QsYUFBYUUsUUFBUSxDQUFDQyxvQkFBb0I7O0FBQ2hHLEVBQUMifQ==