@webiny/lexical-editor 0.0.0-unstable.13771d80a8

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 (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/components/AddRichTextEditorNodeType.d.ts +6 -0
  4. package/components/AddRichTextEditorNodeType.js +28 -0
  5. package/components/AddRichTextEditorNodeType.js.map +1 -0
  6. package/components/AddRichTextEditorPlugin.d.ts +12 -0
  7. package/components/AddRichTextEditorPlugin.js +33 -0
  8. package/components/AddRichTextEditorPlugin.js.map +1 -0
  9. package/components/AddToolbarAction.d.ts +7 -0
  10. package/components/AddToolbarAction.js +33 -0
  11. package/components/AddToolbarAction.js.map +1 -0
  12. package/components/Editor/HeadingEditor.d.ts +7 -0
  13. package/components/Editor/HeadingEditor.js +28 -0
  14. package/components/Editor/HeadingEditor.js.map +1 -0
  15. package/components/Editor/ParagraphEditor.d.ts +7 -0
  16. package/components/Editor/ParagraphEditor.js +30 -0
  17. package/components/Editor/ParagraphEditor.js.map +1 -0
  18. package/components/Editor/RichTextEditor.d.ts +25 -0
  19. package/components/Editor/RichTextEditor.js +112 -0
  20. package/components/Editor/RichTextEditor.js.map +1 -0
  21. package/components/LexicalEditorConfig/LexicalEditorConfig.d.ts +7 -0
  22. package/components/LexicalEditorConfig/LexicalEditorConfig.js +15 -0
  23. package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -0
  24. package/components/LexicalHtmlRenderer.d.ts +11 -0
  25. package/components/LexicalHtmlRenderer.js +48 -0
  26. package/components/LexicalHtmlRenderer.js.map +1 -0
  27. package/components/Toolbar/HeadingToolbar.d.ts +12 -0
  28. package/components/Toolbar/HeadingToolbar.js +23 -0
  29. package/components/Toolbar/HeadingToolbar.js.map +1 -0
  30. package/components/Toolbar/ParagraphToolbar.d.ts +12 -0
  31. package/components/Toolbar/ParagraphToolbar.js +23 -0
  32. package/components/Toolbar/ParagraphToolbar.js.map +1 -0
  33. package/components/Toolbar/Toolbar.css +423 -0
  34. package/components/Toolbar/Toolbar.d.ts +13 -0
  35. package/components/Toolbar/Toolbar.js +161 -0
  36. package/components/Toolbar/Toolbar.js.map +1 -0
  37. package/components/ToolbarActions/BoldAction.d.ts +5 -0
  38. package/components/ToolbarActions/BoldAction.js +38 -0
  39. package/components/ToolbarActions/BoldAction.js.map +1 -0
  40. package/components/ToolbarActions/BulletListAction.d.ts +5 -0
  41. package/components/ToolbarActions/BulletListAction.js +89 -0
  42. package/components/ToolbarActions/BulletListAction.js.map +1 -0
  43. package/components/ToolbarActions/CodeHighlightAction.d.ts +6 -0
  44. package/components/ToolbarActions/CodeHighlightAction.js +39 -0
  45. package/components/ToolbarActions/CodeHighlightAction.js.map +1 -0
  46. package/components/ToolbarActions/FontColorAction.d.ts +11 -0
  47. package/components/ToolbarActions/FontColorAction.js +88 -0
  48. package/components/ToolbarActions/FontColorAction.js.map +1 -0
  49. package/components/ToolbarActions/FontSizeAction.d.ts +2 -0
  50. package/components/ToolbarActions/FontSizeAction.js +104 -0
  51. package/components/ToolbarActions/FontSizeAction.js.map +1 -0
  52. package/components/ToolbarActions/ItalicAction.d.ts +5 -0
  53. package/components/ToolbarActions/ItalicAction.js +38 -0
  54. package/components/ToolbarActions/ItalicAction.js.map +1 -0
  55. package/components/ToolbarActions/LinkAction.d.ts +7 -0
  56. package/components/ToolbarActions/LinkAction.js +69 -0
  57. package/components/ToolbarActions/LinkAction.js.map +1 -0
  58. package/components/ToolbarActions/NumberedListAction.d.ts +5 -0
  59. package/components/ToolbarActions/NumberedListAction.js +89 -0
  60. package/components/ToolbarActions/NumberedListAction.js.map +1 -0
  61. package/components/ToolbarActions/QuoteAction.d.ts +4 -0
  62. package/components/ToolbarActions/QuoteAction.js +66 -0
  63. package/components/ToolbarActions/QuoteAction.js.map +1 -0
  64. package/components/ToolbarActions/UnderlineAction.d.ts +5 -0
  65. package/components/ToolbarActions/UnderlineAction.js +38 -0
  66. package/components/ToolbarActions/UnderlineAction.js.map +1 -0
  67. package/components/ToolbarPresets/HeadingToolbarPreset.d.ts +2 -0
  68. package/components/ToolbarPresets/HeadingToolbarPreset.js +48 -0
  69. package/components/ToolbarPresets/HeadingToolbarPreset.js.map +1 -0
  70. package/components/ToolbarPresets/ParagraphToolbarPreset.d.ts +2 -0
  71. package/components/ToolbarPresets/ParagraphToolbarPreset.js +63 -0
  72. package/components/ToolbarPresets/ParagraphToolbarPreset.js.map +1 -0
  73. package/context/FontColorActionContext.d.ts +6 -0
  74. package/context/FontColorActionContext.js +10 -0
  75. package/context/FontColorActionContext.js.map +1 -0
  76. package/context/RichTextEditorContext.d.ts +11 -0
  77. package/context/RichTextEditorContext.js +29 -0
  78. package/context/RichTextEditorContext.js.map +1 -0
  79. package/hooks/useFontColorPicker.d.ts +2 -0
  80. package/hooks/useFontColorPicker.js +15 -0
  81. package/hooks/useFontColorPicker.js.map +1 -0
  82. package/hooks/useRichTextEditor.d.ts +2 -0
  83. package/hooks/useRichTextEditor.js +15 -0
  84. package/hooks/useRichTextEditor.js.map +1 -0
  85. package/images/icons/LICENSE.md +5 -0
  86. package/images/icons/chat-square-quote.svg +1 -0
  87. package/images/icons/chevron-down.svg +1 -0
  88. package/images/icons/code.svg +1 -0
  89. package/images/icons/font-color.svg +1 -0
  90. package/images/icons/link.svg +1 -0
  91. package/images/icons/list-ol.svg +1 -0
  92. package/images/icons/list-ul.svg +1 -0
  93. package/images/icons/pencil-fill.svg +1 -0
  94. package/images/icons/text-center.svg +1 -0
  95. package/images/icons/text-left.svg +1 -0
  96. package/images/icons/text-paragraph.svg +1 -0
  97. package/images/icons/text-right.svg +1 -0
  98. package/images/icons/type-bold.svg +1 -0
  99. package/images/icons/type-h1.svg +1 -0
  100. package/images/icons/type-h2.svg +1 -0
  101. package/images/icons/type-h3.svg +1 -0
  102. package/images/icons/type-h4.svg +1 -0
  103. package/images/icons/type-h5.svg +1 -0
  104. package/images/icons/type-h6.svg +1 -0
  105. package/images/icons/type-italic.svg +1 -0
  106. package/images/icons/type-strikethrough.svg +1 -0
  107. package/images/icons/type-underline.svg +1 -0
  108. package/images/icons/unlink_icon.svg +1 -0
  109. package/index.d.ts +37 -0
  110. package/index.js +260 -0
  111. package/index.js.map +1 -0
  112. package/nodes/FontColorNode.d.ts +43 -0
  113. package/nodes/FontColorNode.js +127 -0
  114. package/nodes/FontColorNode.js.map +1 -0
  115. package/nodes/webinyNodes.d.ts +2 -0
  116. package/nodes/webinyNodes.js +16 -0
  117. package/nodes/webinyNodes.js.map +1 -0
  118. package/package.json +38 -0
  119. package/plugins/AutoLinkPlugin/AutoLinkPlugin.d.ts +11 -0
  120. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js +46 -0
  121. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js.map +1 -0
  122. package/plugins/AutoLinkPlugin/index.d.ts +1 -0
  123. package/plugins/AutoLinkPlugin/index.js +16 -0
  124. package/plugins/AutoLinkPlugin/index.js.map +1 -0
  125. package/plugins/BlurEventPlugin/BlurEventPlugin.d.ts +7 -0
  126. package/plugins/BlurEventPlugin/BlurEventPlugin.js +28 -0
  127. package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -0
  128. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.d.ts +17 -0
  129. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js +88 -0
  130. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js.map +1 -0
  131. package/plugins/ClickableLinkPlugin/index.d.ts +1 -0
  132. package/plugins/ClickableLinkPlugin/index.js +16 -0
  133. package/plugins/ClickableLinkPlugin/index.js.map +1 -0
  134. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.d.ts +1 -0
  135. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js +20 -0
  136. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -0
  137. package/plugins/CodeHighlightPlugin/index.d.ts +1 -0
  138. package/plugins/CodeHighlightPlugin/index.js +16 -0
  139. package/plugins/CodeHighlightPlugin/index.js.map +1 -0
  140. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +118 -0
  141. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.d.ts +7 -0
  142. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +222 -0
  143. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -0
  144. package/plugins/FloatingLinkEditorPlugin/index.d.ts +1 -0
  145. package/plugins/FloatingLinkEditorPlugin/index.js +16 -0
  146. package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -0
  147. package/plugins/FontColorPlugin/FontColorPlugin.d.ts +2 -0
  148. package/plugins/FontColorPlugin/FontColorPlugin.js +38 -0
  149. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -0
  150. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.d.ts +8 -0
  151. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js +34 -0
  152. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js.map +1 -0
  153. package/plugins/LexicalUpdateStatePlugin/index.d.ts +1 -0
  154. package/plugins/LexicalUpdateStatePlugin/index.js +16 -0
  155. package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -0
  156. package/themes/webinyLexicalTheme.css +422 -0
  157. package/themes/webinyLexicalTheme.d.ts +7 -0
  158. package/themes/webinyLexicalTheme.js +86 -0
  159. package/themes/webinyLexicalTheme.js.map +1 -0
  160. package/types.d.ts +3 -0
  161. package/types.js +12 -0
  162. package/types.js.map +1 -0
  163. package/ui/Divider.d.ts +2 -0
  164. package/ui/Divider.js +13 -0
  165. package/ui/Divider.js.map +1 -0
  166. package/ui/DropDown.d.ts +26 -0
  167. package/ui/DropDown.js +173 -0
  168. package/ui/DropDown.js.map +1 -0
  169. package/ui/Input.css +32 -0
  170. package/ui/LinkPreview.css +69 -0
  171. package/ui/LinkPreview.d.ts +12 -0
  172. package/ui/LinkPreview.js +101 -0
  173. package/ui/LinkPreview.js.map +1 -0
  174. package/ui/Placeholder.css +23 -0
  175. package/ui/Placeholder.d.ts +13 -0
  176. package/ui/Placeholder.js +24 -0
  177. package/ui/Placeholder.js.map +1 -0
  178. package/ui/TextInput.d.ts +18 -0
  179. package/ui/TextInput.js +39 -0
  180. package/ui/TextInput.js.map +1 -0
  181. package/ui/ToolbarActionDialog.d.ts +12 -0
  182. package/ui/ToolbarActionDialog.js +107 -0
  183. package/ui/ToolbarActionDialog.js.map +1 -0
  184. package/utils/generateInitialLexicalValue.d.ts +5 -0
  185. package/utils/generateInitialLexicalValue.js +29 -0
  186. package/utils/generateInitialLexicalValue.js.map +1 -0
  187. package/utils/getDOMRangeRect.d.ts +10 -0
  188. package/utils/getDOMRangeRect.js +27 -0
  189. package/utils/getDOMRangeRect.js.map +1 -0
  190. package/utils/getSelectedNode.d.ts +2 -0
  191. package/utils/getSelectedNode.js +30 -0
  192. package/utils/getSelectedNode.js.map +1 -0
  193. package/utils/isValidJSON.d.ts +1 -0
  194. package/utils/isValidJSON.js +18 -0
  195. package/utils/isValidJSON.js.map +1 -0
  196. package/utils/isValidLexicalData.d.ts +2 -0
  197. package/utils/isValidLexicalData.js +24 -0
  198. package/utils/isValidLexicalData.js.map +1 -0
  199. package/utils/point.d.ts +21 -0
  200. package/utils/point.js +77 -0
  201. package/utils/point.js.map +1 -0
  202. package/utils/rect.d.ts +47 -0
  203. package/utils/rect.js +169 -0
  204. package/utils/rect.js.map +1 -0
  205. package/utils/sanitizeUrl.d.ts +8 -0
  206. package/utils/sanitizeUrl.js +27 -0
  207. package/utils/sanitizeUrl.js.map +1 -0
  208. package/utils/setFloatingElemPosition.d.ts +3 -0
  209. package/utils/setFloatingElemPosition.js +40 -0
  210. package/utils/setFloatingElemPosition.js.map +1 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ export declare const sanitizeUrl: (url: string) => string;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.sanitizeUrl = void 0;
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ *
13
+ */
14
+
15
+ var sanitizeUrl = function sanitizeUrl(url) {
16
+ /** A pattern that matches safe URLs. */
17
+ var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi;
18
+
19
+ /** A pattern that matches safe data URLs. */
20
+ var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
21
+ url = String(url).trim();
22
+ if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN)) {
23
+ return url;
24
+ }
25
+ return "https://";
26
+ };
27
+ exports.sanitizeUrl = sanitizeUrl;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sanitizeUrl","url","SAFE_URL_PATTERN","DATA_URL_PATTERN","String","trim","match"],"sources":["sanitizeUrl.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nexport const sanitizeUrl = (url: string): string => {\n /** A pattern that matches safe URLs. */\n const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi;\n\n /** A pattern that matches safe data URLs. */\n const DATA_URL_PATTERN =\n /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n url = String(url).trim();\n\n if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN)) {\n return url;\n }\n\n return `https://`;\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAW,CAAIC,GAAW,EAAa;EAChD;EACA,IAAMC,gBAAgB,GAAG,iEAAiE;;EAE1F;EACA,IAAMC,gBAAgB,GAClB,qIAAqI;EAEzIF,GAAG,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACI,IAAI,EAAE;EAExB,IAAIJ,GAAG,CAACK,KAAK,CAACJ,gBAAgB,CAAC,IAAID,GAAG,CAACK,KAAK,CAACH,gBAAgB,CAAC,EAAE;IAC5D,OAAOF,GAAG;EACd;EAEA;AACJ,CAAC;AAAC"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="web" />
2
+ /// <reference types="react" />
3
+ export declare function setFloatingElemPosition(targetRect: ClientRect | null, floatingElem: HTMLElement, anchorElem: HTMLElement, verticalGap?: number, horizontalOffset?: number): void;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setFloatingElemPosition = setFloatingElemPosition;
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ *
13
+ */
14
+ var VERTICAL_GAP = 10;
15
+ var HORIZONTAL_OFFSET = 5;
16
+ function setFloatingElemPosition(targetRect, floatingElem, anchorElem) {
17
+ var verticalGap = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : VERTICAL_GAP;
18
+ var horizontalOffset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : HORIZONTAL_OFFSET;
19
+ var scrollerElem = anchorElem.parentElement;
20
+ if (targetRect === null || !scrollerElem) {
21
+ floatingElem.style.opacity = "0";
22
+ floatingElem.style.transform = "translate(-10000px, -10000px)";
23
+ return;
24
+ }
25
+ var floatingElemRect = floatingElem.getBoundingClientRect();
26
+ var anchorElementRect = anchorElem.getBoundingClientRect();
27
+ var editorScrollerRect = scrollerElem.getBoundingClientRect();
28
+ var top = targetRect.top - floatingElemRect.height - verticalGap;
29
+ var left = targetRect.left - horizontalOffset;
30
+ if (top < editorScrollerRect.top) {
31
+ top += floatingElemRect.height + targetRect.height + verticalGap * 2;
32
+ }
33
+ if (left + floatingElemRect.width > editorScrollerRect.right) {
34
+ left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;
35
+ }
36
+ top -= anchorElementRect.top;
37
+ left -= anchorElementRect.left;
38
+ floatingElem.style.opacity = "1";
39
+ floatingElem.style.transform = "translate(".concat(left, "px, ").concat(top, "px)");
40
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPosition","targetRect","floatingElem","anchorElem","verticalGap","horizontalOffset","scrollerElem","parentElement","style","opacity","transform","floatingElemRect","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","height","left","width","right"],"sources":["setFloatingElemPosition.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nconst VERTICAL_GAP = 10;\nconst HORIZONTAL_OFFSET = 5;\n\nexport function setFloatingElemPosition(\n targetRect: ClientRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET\n): void {\n const scrollerElem = anchorElem.parentElement;\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = \"0\";\n floatingElem.style.transform = \"translate(-10000px, -10000px)\";\n return;\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect();\n const anchorElementRect = anchorElem.getBoundingClientRect();\n const editorScrollerRect = scrollerElem.getBoundingClientRect();\n\n let top = targetRect.top - floatingElemRect.height - verticalGap;\n let left = targetRect.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2;\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;\n }\n\n top -= anchorElementRect.top;\n left -= anchorElementRect.left;\n\n floatingElem.style.opacity = \"1\";\n floatingElem.style.transform = `translate(${left}px, ${top}px)`;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,YAAY,GAAG,EAAE;AACvB,IAAMC,iBAAiB,GAAG,CAAC;AAEpB,SAASC,uBAAuB,CACnCC,UAA6B,EAC7BC,YAAyB,EACzBC,UAAuB,EAGnB;EAAA,IAFJC,WAAmB,uEAAGN,YAAY;EAAA,IAClCO,gBAAwB,uEAAGN,iBAAiB;EAE5C,IAAMO,YAAY,GAAGH,UAAU,CAACI,aAAa;EAE7C,IAAIN,UAAU,KAAK,IAAI,IAAI,CAACK,YAAY,EAAE;IACtCJ,YAAY,CAACM,KAAK,CAACC,OAAO,GAAG,GAAG;IAChCP,YAAY,CAACM,KAAK,CAACE,SAAS,GAAG,+BAA+B;IAC9D;EACJ;EAEA,IAAMC,gBAAgB,GAAGT,YAAY,CAACU,qBAAqB,EAAE;EAC7D,IAAMC,iBAAiB,GAAGV,UAAU,CAACS,qBAAqB,EAAE;EAC5D,IAAME,kBAAkB,GAAGR,YAAY,CAACM,qBAAqB,EAAE;EAE/D,IAAIG,GAAG,GAAGd,UAAU,CAACc,GAAG,GAAGJ,gBAAgB,CAACK,MAAM,GAAGZ,WAAW;EAChE,IAAIa,IAAI,GAAGhB,UAAU,CAACgB,IAAI,GAAGZ,gBAAgB;EAE7C,IAAIU,GAAG,GAAGD,kBAAkB,CAACC,GAAG,EAAE;IAC9BA,GAAG,IAAIJ,gBAAgB,CAACK,MAAM,GAAGf,UAAU,CAACe,MAAM,GAAGZ,WAAW,GAAG,CAAC;EACxE;EAEA,IAAIa,IAAI,GAAGN,gBAAgB,CAACO,KAAK,GAAGJ,kBAAkB,CAACK,KAAK,EAAE;IAC1DF,IAAI,GAAGH,kBAAkB,CAACK,KAAK,GAAGR,gBAAgB,CAACO,KAAK,GAAGb,gBAAgB;EAC/E;EAEAU,GAAG,IAAIF,iBAAiB,CAACE,GAAG;EAC5BE,IAAI,IAAIJ,iBAAiB,CAACI,IAAI;EAE9Bf,YAAY,CAACM,KAAK,CAACC,OAAO,GAAG,GAAG;EAChCP,YAAY,CAACM,KAAK,CAACE,SAAS,uBAAgBO,IAAI,iBAAOF,GAAG,QAAK;AACnE"}