@frontify/guideline-blocks-settings 0.29.1 → 0.29.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js +14 -14
- package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js.map +1 -1
- package/dist/components/BlockItemWrapper/Toolbar.es.js +27 -24
- package/dist/components/BlockItemWrapper/Toolbar.es.js.map +1 -1
- package/dist/components/Link/utils/getUrl.es.js +10 -9
- package/dist/components/Link/utils/getUrl.es.js.map +1 -1
- package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/useFloatingButtonEdit.es.js +5 -5
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.es.js +7 -7
- package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.es.js.map +1 -1
- package/dist/index.cjs.js +3 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.es.js +90 -89
- package/dist/index.umd.js +3 -3
- package/dist/index.umd.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/BlockItemWrapper/BlockItemWrapper.tsx +4 -3
- package/src/components/BlockItemWrapper/Toolbar.tsx +8 -4
- package/src/components/Link/utils/getUrl.ts +4 -0
- package/src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @frontify/guideline-blocks-settings
|
|
2
2
|
|
|
3
|
+
## 0.29.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#540](https://github.com/Frontify/brand-sdk/pull/540) [`98f876a`](https://github.com/Frontify/brand-sdk/commit/98f876a05cec68c51e9a6986b38bde3cf08597e7) Thanks [@ragi96](https://github.com/ragi96)! - fix: improving the toolbar style
|
|
8
|
+
|
|
9
|
+
- [#542](https://github.com/Frontify/brand-sdk/pull/542) [`eea4b74`](https://github.com/Frontify/brand-sdk/commit/eea4b746ccd69e2a96251b7d0e909237c20ca0ae) Thanks [@ragi96](https://github.com/ragi96)! - fix: BlockItemWrapper type issue
|
|
10
|
+
|
|
11
|
+
- [#539](https://github.com/Frontify/brand-sdk/pull/539) [`5e94f00`](https://github.com/Frontify/brand-sdk/commit/5e94f00401dbe7451e2b90c157e89f808bd2fa06) Thanks [@fulopdaniel](https://github.com/fulopdaniel)! - fix(RTE): link edit looks for button instead of a tags
|
|
12
|
+
|
|
3
13
|
## 0.29.1
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useState as a, useRef as
|
|
3
|
-
import { Toolbar as
|
|
1
|
+
import { jsx as l, Fragment as g, jsxs as F } from "react/jsx-runtime";
|
|
2
|
+
import { useState as a, useRef as b, useEffect as h } from "react";
|
|
3
|
+
import { Toolbar as j } from "./Toolbar.es.js";
|
|
4
4
|
import { joinClassNames as c } from "../../utilities/react/joinClassNames.es.js";
|
|
5
|
-
const
|
|
6
|
-
children:
|
|
5
|
+
const R = ({
|
|
6
|
+
children: r,
|
|
7
7
|
toolbarFlyoutItems: p,
|
|
8
8
|
toolbarItems: e,
|
|
9
9
|
shouldHideWrapper: w,
|
|
@@ -13,13 +13,13 @@ const E = ({
|
|
|
13
13
|
outlineOffset: o = 2,
|
|
14
14
|
shouldBeShown: i = !1
|
|
15
15
|
}) => {
|
|
16
|
-
const [t, m] = a(i), [y, s] = a(!1), v =
|
|
17
|
-
if (
|
|
16
|
+
const [t, m] = a(i), [y, s] = a(!1), v = b(null);
|
|
17
|
+
if (h(() => {
|
|
18
18
|
t || s(!0);
|
|
19
19
|
}, [t]), w)
|
|
20
|
-
return l;
|
|
20
|
+
return /* @__PURE__ */ l(g, { children: r });
|
|
21
21
|
const x = e == null ? void 0 : e.filter((d) => d !== void 0);
|
|
22
|
-
return /* @__PURE__ */
|
|
22
|
+
return /* @__PURE__ */ F(
|
|
23
23
|
"div",
|
|
24
24
|
{
|
|
25
25
|
ref: v,
|
|
@@ -37,7 +37,7 @@ const E = ({
|
|
|
37
37
|
n && "tw-opacity-0"
|
|
38
38
|
]),
|
|
39
39
|
children: [
|
|
40
|
-
/* @__PURE__ */
|
|
40
|
+
/* @__PURE__ */ l(
|
|
41
41
|
"div",
|
|
42
42
|
{
|
|
43
43
|
style: {
|
|
@@ -49,8 +49,8 @@ const E = ({
|
|
|
49
49
|
"group-hover:tw-opacity-100 group-focus:tw-opacity-100 focus-within:tw-opacity-100",
|
|
50
50
|
(t || i) && "tw-opacity-100"
|
|
51
51
|
]),
|
|
52
|
-
children: /* @__PURE__ */
|
|
53
|
-
|
|
52
|
+
children: /* @__PURE__ */ l(
|
|
53
|
+
j,
|
|
54
54
|
{
|
|
55
55
|
isFlyoutOpen: t,
|
|
56
56
|
isFlyoutDisabled: y,
|
|
@@ -62,12 +62,12 @@ const E = ({
|
|
|
62
62
|
)
|
|
63
63
|
}
|
|
64
64
|
),
|
|
65
|
-
|
|
65
|
+
r
|
|
66
66
|
]
|
|
67
67
|
}
|
|
68
68
|
);
|
|
69
69
|
};
|
|
70
70
|
export {
|
|
71
|
-
|
|
71
|
+
R as BlockItemWrapper
|
|
72
72
|
};
|
|
73
73
|
//# sourceMappingURL=BlockItemWrapper.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockItemWrapper.es.js","sources":["../../../src/components/BlockItemWrapper/BlockItemWrapper.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useEffect, useRef, useState } from 'react';\nimport { joinClassNames } from '../../utilities';\nimport { Toolbar } from './Toolbar';\nimport { BlockItemWrapperProps, ToolbarItem } from './types';\n\nexport const BlockItemWrapper = ({\n children,\n toolbarFlyoutItems,\n toolbarItems,\n shouldHideWrapper,\n shouldHideComponent = false,\n isDragging,\n shouldFillContainer,\n outlineOffset = 2,\n shouldBeShown = false,\n}: BlockItemWrapperProps) => {\n const [isFlyoutOpen, setIsFlyoutOpen] = useState(shouldBeShown);\n const [isFlyoutDisabled, setIsFlyoutDisabled] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isFlyoutOpen) {\n // This prevents automatic refocusing of the trigger element\n setIsFlyoutDisabled(true);\n }\n }, [isFlyoutOpen]);\n\n if (shouldHideWrapper) {\n return children
|
|
1
|
+
{"version":3,"file":"BlockItemWrapper.es.js","sources":["../../../src/components/BlockItemWrapper/BlockItemWrapper.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ReactElement, useEffect, useRef, useState } from 'react';\nimport { joinClassNames } from '../../utilities';\nimport { Toolbar } from './Toolbar';\nimport { BlockItemWrapperProps, ToolbarItem } from './types';\n\nexport const BlockItemWrapper = ({\n children,\n toolbarFlyoutItems,\n toolbarItems,\n shouldHideWrapper,\n shouldHideComponent = false,\n isDragging,\n shouldFillContainer,\n outlineOffset = 2,\n shouldBeShown = false,\n}: BlockItemWrapperProps): ReactElement => {\n const [isFlyoutOpen, setIsFlyoutOpen] = useState(shouldBeShown);\n const [isFlyoutDisabled, setIsFlyoutDisabled] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isFlyoutOpen) {\n // This prevents automatic refocusing of the trigger element\n setIsFlyoutDisabled(true);\n }\n }, [isFlyoutOpen]);\n\n if (shouldHideWrapper) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children}</>;\n }\n\n const items = toolbarItems?.filter((item): item is ToolbarItem => item !== undefined);\n\n return (\n <div\n ref={wrapperRef}\n onFocus={() => setIsFlyoutDisabled(false)}\n onPointerEnter={() => setIsFlyoutDisabled(false)}\n data-test-id=\"block-item-wrapper\"\n style={{\n outlineOffset,\n }}\n className={joinClassNames([\n 'tw-relative tw-group tw-outline-1 tw-outline-box-selected-inverse',\n shouldFillContainer && 'tw-flex-1 tw-h-full tw-w-full',\n 'hover:tw-outline focus-within:tw-outline',\n (isFlyoutOpen || shouldBeShown) && 'tw-outline',\n shouldHideComponent && 'tw-opacity-0',\n ])}\n >\n <div\n style={{\n right: -1 - outlineOffset,\n bottom: `calc(100% - ${2 + outlineOffset}px)`,\n }}\n className={joinClassNames([\n 'tw-pointer-events-none tw-absolute tw-bottom-[calc(100%-4px)] tw-right-[-3px] tw-w-full tw-opacity-0 tw-z-10',\n 'group-hover:tw-opacity-100 group-focus:tw-opacity-100 focus-within:tw-opacity-100',\n (isFlyoutOpen || shouldBeShown) && 'tw-opacity-100',\n ])}\n >\n <Toolbar\n isFlyoutOpen={isFlyoutOpen}\n isFlyoutDisabled={isFlyoutDisabled}\n setIsFlyoutOpen={setIsFlyoutOpen}\n flyoutItems={toolbarFlyoutItems}\n items={items}\n isDragging={isDragging}\n />\n </div>\n {children}\n </div>\n );\n};\n"],"names":["BlockItemWrapper","children","toolbarFlyoutItems","toolbarItems","shouldHideWrapper","shouldHideComponent","isDragging","shouldFillContainer","outlineOffset","shouldBeShown","isFlyoutOpen","setIsFlyoutOpen","useState","isFlyoutDisabled","setIsFlyoutDisabled","wrapperRef","useRef","useEffect","items","item","jsxs","joinClassNames","jsx","Toolbar"],"mappings":";;;;AAOO,MAAMA,IAAmB,CAAC;AAAA,EAC7B,UAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,qBAAAC,IAAsB;AAAA,EACtB,YAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,eAAAC,IAAgB;AACpB,MAA2C;AACvC,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAASH,CAAa,GACxD,CAACI,GAAkBC,CAAmB,IAAIF,EAAS,EAAK,GACxDG,IAAaC,EAAuB,IAAI;AAS9C,MAPAC,EAAU,MAAM;AACZ,IAAKP,KAEDI,EAAoB,EAAI;AAAA,EAC5B,GACD,CAACJ,CAAY,CAAC,GAEbN;AAEA,kCAAU,UAAAH,EAAS,CAAA;AAGvB,QAAMiB,IAAQf,KAAA,gBAAAA,EAAc,OAAO,CAACgB,MAA8BA,MAAS;AAGvE,SAAA,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAKL;AAAA,MACL,SAAS,MAAMD,EAAoB,EAAK;AAAA,MACxC,gBAAgB,MAAMA,EAAoB,EAAK;AAAA,MAC/C,gBAAa;AAAA,MACb,OAAO;AAAA,QACH,eAAAN;AAAA,MACJ;AAAA,MACA,WAAWa,EAAe;AAAA,QACtB;AAAA,QACAd,KAAuB;AAAA,QACvB;AAAA,SACCG,KAAgBD,MAAkB;AAAA,QACnCJ,KAAuB;AAAA,MAAA,CAC1B;AAAA,MAED,UAAA;AAAA,QAAA,gBAAAiB;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,OAAO;AAAA,cACH,OAAO,KAAKd;AAAA,cACZ,QAAQ,eAAe,IAAIA,CAAa;AAAA,YAC5C;AAAA,YACA,WAAWa,EAAe;AAAA,cACtB;AAAA,cACA;AAAA,eACCX,KAAgBD,MAAkB;AAAA,YAAA,CACtC;AAAA,YAED,UAAA,gBAAAa;AAAA,cAACC;AAAA,cAAA;AAAA,gBACG,cAAAb;AAAA,gBACA,kBAAAG;AAAA,gBACA,iBAAAF;AAAA,gBACA,aAAaT;AAAA,gBACb,OAAAgB;AAAA,gBACA,YAAAZ;AAAA,cAAA;AAAA,YACJ;AAAA,UAAA;AAAA,QACJ;AAAA,QACCL;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGb;"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
2
|
-
import { LegacyTooltip as l, TooltipPosition as n, Flyout as
|
|
3
|
-
import { DEFAULT_DRAGGING_TOOLTIP as
|
|
4
|
-
import { joinClassNames as
|
|
5
|
-
const
|
|
6
|
-
items:
|
|
1
|
+
import { jsx as e, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import { LegacyTooltip as l, TooltipPosition as n, FOCUS_VISIBLE_STYLE as m, Flyout as u, IconDotsHorizontal16 as v, ActionMenu as f, MenuItemContentSize as x } from "@frontify/fondue";
|
|
3
|
+
import { DEFAULT_DRAGGING_TOOLTIP as g, DEFAULT_DRAG_TOOLTIP as y } from "./constants.es.js";
|
|
4
|
+
import { joinClassNames as w } from "../../utilities/react/joinClassNames.es.js";
|
|
5
|
+
const C = ({
|
|
6
|
+
items: c,
|
|
7
7
|
flyoutItems: s,
|
|
8
|
-
isFlyoutOpen:
|
|
8
|
+
isFlyoutOpen: d,
|
|
9
9
|
setIsFlyoutOpen: a,
|
|
10
10
|
isDragging: r,
|
|
11
|
-
isFlyoutDisabled:
|
|
12
|
-
}) => /* @__PURE__ */ e("div", { "data-test-id": "block-item-wrapper-toolbar", className: "tw-flex tw-justify-end", children: /* @__PURE__ */
|
|
13
|
-
|
|
11
|
+
isFlyoutDisabled: b
|
|
12
|
+
}) => /* @__PURE__ */ e("div", { "data-test-id": "block-item-wrapper-toolbar", className: "tw-flex tw-justify-end", children: /* @__PURE__ */ h("div", { className: "tw-bg-white tw-isolate tw-text-box-selected-inverse tw-pointer-events-auto tw-flex tw-flex-shrink-0 tw-gap-[2px] tw-px-[1px] tw-spacing tw-items-center tw-h-7 tw-self-start tw-border tw-border-box-selected-inverse tw-rounded", children: [
|
|
13
|
+
c.map(
|
|
14
14
|
(t, o) => "draggableProps" in t ? /* @__PURE__ */ e(
|
|
15
15
|
l,
|
|
16
16
|
{
|
|
@@ -19,14 +19,14 @@ const A = ({
|
|
|
19
19
|
enterDelay: 300,
|
|
20
20
|
open: r,
|
|
21
21
|
position: n.Top,
|
|
22
|
-
content: /* @__PURE__ */ e("div", { children: r ?
|
|
22
|
+
content: /* @__PURE__ */ e("div", { children: r ? g : t.tooltip ?? y }),
|
|
23
23
|
triggerElement: /* @__PURE__ */ e(
|
|
24
24
|
"button",
|
|
25
25
|
{
|
|
26
26
|
ref: t.setActivatorNodeRef,
|
|
27
27
|
"data-test-id": "block-item-wrapper-toolbar-btn",
|
|
28
28
|
...t.draggableProps,
|
|
29
|
-
className:
|
|
29
|
+
className: w([
|
|
30
30
|
"tw-bg-base tw-inline-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-sm",
|
|
31
31
|
r ? "tw-cursor-grabbing tw-bg-box-selected-pressed" : "tw-cursor-grab hover:tw-bg-box-selected-hover"
|
|
32
32
|
]),
|
|
@@ -49,7 +49,10 @@ const A = ({
|
|
|
49
49
|
{
|
|
50
50
|
"data-test-id": "block-item-wrapper-toolbar-btn",
|
|
51
51
|
onClick: t.onClick,
|
|
52
|
-
className:
|
|
52
|
+
className: w([
|
|
53
|
+
"tw-bg-base tw-relative hover:tw-bg-box-selected-hover active:tw-bg-box-selected-pressed tw-cursor-pointer tw-inline-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-sm focus-visible:tw-z-10",
|
|
54
|
+
m
|
|
55
|
+
]),
|
|
53
56
|
children: t.icon
|
|
54
57
|
}
|
|
55
58
|
)
|
|
@@ -57,11 +60,11 @@ const A = ({
|
|
|
57
60
|
o
|
|
58
61
|
)
|
|
59
62
|
),
|
|
60
|
-
s.length > 0 && /* @__PURE__ */ e("div", { className: "tw-flex tw-flex-shrink-0 tw-flex-1 tw-h-6", children: /* @__PURE__ */ e(
|
|
61
|
-
|
|
63
|
+
s.length > 0 && /* @__PURE__ */ e("div", { className: "tw-flex tw-flex-shrink-0 tw-flex-1 tw-h-6 tw-relative", children: /* @__PURE__ */ e(
|
|
64
|
+
u,
|
|
62
65
|
{
|
|
63
|
-
isOpen:
|
|
64
|
-
isTriggerDisabled:
|
|
66
|
+
isOpen: d && !r,
|
|
67
|
+
isTriggerDisabled: b,
|
|
65
68
|
legacyFooter: !1,
|
|
66
69
|
fitContent: !0,
|
|
67
70
|
hug: !1,
|
|
@@ -79,20 +82,20 @@ const A = ({
|
|
|
79
82
|
"div",
|
|
80
83
|
{
|
|
81
84
|
"data-test-id": "block-item-wrapper-toolbar-flyout",
|
|
82
|
-
className: "tw-bg-base hover:tw-bg-box-selected-hover active:tw-bg-box-selected-pressed tw-cursor-pointer tw-inline-flex
|
|
83
|
-
children: /* @__PURE__ */ e(
|
|
85
|
+
className: "tw-bg-base hover:tw-bg-box-selected-hover active:tw-bg-box-selected-pressed tw-cursor-pointer tw-inline-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-sm tw-relative",
|
|
86
|
+
children: /* @__PURE__ */ e(v, {})
|
|
84
87
|
}
|
|
85
88
|
)
|
|
86
89
|
}
|
|
87
90
|
),
|
|
88
91
|
children: /* @__PURE__ */ e(
|
|
89
|
-
|
|
92
|
+
f,
|
|
90
93
|
{
|
|
91
94
|
menuBlocks: s.map((t, o) => ({
|
|
92
95
|
id: o.toString(),
|
|
93
|
-
menuItems: t.map((i,
|
|
94
|
-
id: o.toString() +
|
|
95
|
-
size:
|
|
96
|
+
menuItems: t.map((i, p) => ({
|
|
97
|
+
id: o.toString() + p.toString(),
|
|
98
|
+
size: x.XSmall,
|
|
96
99
|
title: i.title,
|
|
97
100
|
style: i.style,
|
|
98
101
|
onClick: () => {
|
|
@@ -108,6 +111,6 @@ const A = ({
|
|
|
108
111
|
) })
|
|
109
112
|
] }) });
|
|
110
113
|
export {
|
|
111
|
-
|
|
114
|
+
C as Toolbar
|
|
112
115
|
};
|
|
113
116
|
//# sourceMappingURL=Toolbar.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.es.js","sources":["../../../src/components/BlockItemWrapper/Toolbar.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ActionMenu,\n Flyout,\n IconDotsHorizontal16,\n MenuItemContentSize,\n LegacyTooltip as Tooltip,\n TooltipPosition,\n} from '@frontify/fondue';\nimport { ToolbarProps } from './types';\nimport { joinClassNames } from '../../utilities';\nimport { DEFAULT_DRAGGING_TOOLTIP, DEFAULT_DRAG_TOOLTIP } from './constants';\n\nexport const Toolbar = ({\n items,\n flyoutItems,\n isFlyoutOpen,\n setIsFlyoutOpen,\n isDragging,\n isFlyoutDisabled,\n}: ToolbarProps) => {\n return (\n <div data-test-id=\"block-item-wrapper-toolbar\" className=\"tw-flex tw-justify-end\">\n <div className=\"tw-bg-white tw-text-box-selected-inverse tw-pointer-events-auto tw-flex tw-flex-shrink-0 tw-gap-[2px] tw-px-[1px] tw-spacing tw-items-center tw-h-7 tw-self-start tw-border tw-border-box-selected-inverse tw-rounded\">\n {items.map((item, i) =>\n 'draggableProps' in item ? (\n <Tooltip\n key={i}\n withArrow\n hoverDelay={0}\n enterDelay={300}\n open={isDragging}\n position={TooltipPosition.Top}\n content={\n <div>\n {isDragging ? DEFAULT_DRAGGING_TOOLTIP : item.tooltip ?? DEFAULT_DRAG_TOOLTIP}\n </div>\n }\n triggerElement={\n <button\n ref={item.setActivatorNodeRef}\n data-test-id=\"block-item-wrapper-toolbar-btn\"\n {...item.draggableProps}\n className={joinClassNames([\n 'tw-bg-base tw-inline-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-sm',\n isDragging\n ? 'tw-cursor-grabbing tw-bg-box-selected-pressed'\n : 'tw-cursor-grab hover:tw-bg-box-selected-hover',\n ])}\n >\n {item.icon}\n </button>\n }\n />\n ) : (\n <Tooltip\n key={i}\n withArrow\n enterDelay={300}\n hoverDelay={0}\n disabled={isDragging}\n position={TooltipPosition.Top}\n content={<div>{item.tooltip ?? ''}</div>}\n triggerElement={\n <button\n data-test-id=\"block-item-wrapper-toolbar-btn\"\n onClick={item.onClick}\n className
|
|
1
|
+
{"version":3,"file":"Toolbar.es.js","sources":["../../../src/components/BlockItemWrapper/Toolbar.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ActionMenu,\n FOCUS_VISIBLE_STYLE,\n Flyout,\n IconDotsHorizontal16,\n MenuItemContentSize,\n LegacyTooltip as Tooltip,\n TooltipPosition,\n} from '@frontify/fondue';\nimport { ToolbarProps } from './types';\nimport { joinClassNames } from '../../utilities';\nimport { DEFAULT_DRAGGING_TOOLTIP, DEFAULT_DRAG_TOOLTIP } from './constants';\n\nexport const Toolbar = ({\n items,\n flyoutItems,\n isFlyoutOpen,\n setIsFlyoutOpen,\n isDragging,\n isFlyoutDisabled,\n}: ToolbarProps) => {\n return (\n <div data-test-id=\"block-item-wrapper-toolbar\" className=\"tw-flex tw-justify-end\">\n <div className=\"tw-bg-white tw-isolate tw-text-box-selected-inverse tw-pointer-events-auto tw-flex tw-flex-shrink-0 tw-gap-[2px] tw-px-[1px] tw-spacing tw-items-center tw-h-7 tw-self-start tw-border tw-border-box-selected-inverse tw-rounded\">\n {items.map((item, i) =>\n 'draggableProps' in item ? (\n <Tooltip\n key={i}\n withArrow\n hoverDelay={0}\n enterDelay={300}\n open={isDragging}\n position={TooltipPosition.Top}\n content={\n <div>\n {isDragging ? DEFAULT_DRAGGING_TOOLTIP : item.tooltip ?? DEFAULT_DRAG_TOOLTIP}\n </div>\n }\n triggerElement={\n <button\n ref={item.setActivatorNodeRef}\n data-test-id=\"block-item-wrapper-toolbar-btn\"\n {...item.draggableProps}\n className={joinClassNames([\n 'tw-bg-base tw-inline-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-sm',\n isDragging\n ? 'tw-cursor-grabbing tw-bg-box-selected-pressed'\n : 'tw-cursor-grab hover:tw-bg-box-selected-hover',\n ])}\n >\n {item.icon}\n </button>\n }\n />\n ) : (\n <Tooltip\n key={i}\n withArrow\n enterDelay={300}\n hoverDelay={0}\n disabled={isDragging}\n position={TooltipPosition.Top}\n content={<div>{item.tooltip ?? ''}</div>}\n triggerElement={\n <button\n data-test-id=\"block-item-wrapper-toolbar-btn\"\n onClick={item.onClick}\n className={joinClassNames([\n 'tw-bg-base tw-relative hover:tw-bg-box-selected-hover active:tw-bg-box-selected-pressed tw-cursor-pointer tw-inline-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-sm focus-visible:tw-z-10',\n FOCUS_VISIBLE_STYLE,\n ])}\n >\n {item.icon}\n </button>\n }\n />\n ),\n )}\n {flyoutItems.length > 0 && (\n <div className=\"tw-flex tw-flex-shrink-0 tw-flex-1 tw-h-6 tw-relative\">\n <Flyout\n isOpen={isFlyoutOpen && !isDragging}\n isTriggerDisabled={isFlyoutDisabled}\n legacyFooter={false}\n fitContent\n hug={false}\n onOpenChange={setIsFlyoutOpen}\n trigger={\n <Tooltip\n withArrow\n hoverDelay={0}\n enterDelay={300}\n disabled={isDragging}\n position={TooltipPosition.Top}\n content={<div>Options</div>}\n triggerElement={\n <div\n data-test-id=\"block-item-wrapper-toolbar-flyout\"\n className=\"tw-bg-base hover:tw-bg-box-selected-hover active:tw-bg-box-selected-pressed tw-cursor-pointer tw-inline-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-sm tw-relative\"\n >\n <IconDotsHorizontal16 />\n </div>\n }\n />\n }\n >\n <ActionMenu\n menuBlocks={flyoutItems.map((block, blockIndex) => ({\n id: blockIndex.toString(),\n menuItems: block.map((item, itemIndex) => ({\n id: blockIndex.toString() + itemIndex.toString(),\n size: MenuItemContentSize.XSmall,\n title: item.title,\n style: item.style,\n onClick: () => {\n setIsFlyoutOpen(false);\n item.onClick();\n },\n initialValue: true,\n decorator: <div className=\"tw-mr-2\">{item.icon}</div>,\n })),\n }))}\n />\n </Flyout>\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"names":["Toolbar","items","flyoutItems","isFlyoutOpen","setIsFlyoutOpen","isDragging","isFlyoutDisabled","jsx","jsxs","item","i","Tooltip","TooltipPosition","DEFAULT_DRAGGING_TOOLTIP","DEFAULT_DRAG_TOOLTIP","joinClassNames","FOCUS_VISIBLE_STYLE","Flyout","IconDotsHorizontal16","ActionMenu","block","blockIndex","itemIndex","MenuItemContentSize"],"mappings":"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"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { getAboveNode as c, ELEMENT_LINK as s } from "@udecode/plate";
|
|
2
|
-
const
|
|
2
|
+
const n = (r, e) => {
|
|
3
3
|
const t = c(r, { match: { type: s } });
|
|
4
4
|
return Array.isArray(t) ? e(t[0]) : "";
|
|
5
|
-
},
|
|
6
|
-
var t,
|
|
7
|
-
return ((
|
|
8
|
-
}),
|
|
5
|
+
}, L = (r) => n(r, (e) => {
|
|
6
|
+
var t, o;
|
|
7
|
+
return ((o = (t = e.chosenLink) == null ? void 0 : t.searchResult) == null ? void 0 : o.link) || "";
|
|
8
|
+
}), l = (r) => n(r, (e) => e.url || ""), i = (r) => {
|
|
9
9
|
var e, t;
|
|
10
10
|
return r.url || ((t = (e = r.chosenLink) == null ? void 0 : e.searchResult) == null ? void 0 : t.link) || "";
|
|
11
|
-
};
|
|
11
|
+
}, g = (r) => n(r, i);
|
|
12
12
|
export {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
L as getLegacyUrl,
|
|
14
|
+
g as getLinkFromEditor,
|
|
15
|
+
l as getUrl,
|
|
16
|
+
i as getUrlFromLinkOrLegacyLink
|
|
16
17
|
};
|
|
17
18
|
//# sourceMappingURL=getUrl.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUrl.es.js","sources":["../../../../src/components/Link/utils/getUrl.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ELEMENT_LINK, PlateEditor, getAboveNode } from '@udecode/plate';\nimport { TLinkElement } from '../../RichTextEditor/plugins/LinkPlugin/types';\n\nconst getLinkNode = (editor: PlateEditor, cb: (link: TLinkElement) => string): string => {\n const linkNode = getAboveNode<TLinkElement>(editor, { match: { type: ELEMENT_LINK } });\n\n if (!Array.isArray(linkNode)) {\n return '';\n }\n\n return cb(linkNode[0]);\n};\n\nexport const getLegacyUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.chosenLink?.searchResult?.link || '');\n};\n\nexport const getUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.url || '');\n};\n\nexport const getUrlFromLinkOrLegacyLink = (link: TLinkElement): string => {\n return link.url || link.chosenLink?.searchResult?.link || '';\n};\n"],"names":["getLinkNode","editor","cb","linkNode","getAboveNode","ELEMENT_LINK","getLegacyUrl","link","_b","_a","getUrl","getUrlFromLinkOrLegacyLink"],"mappings":";AAKA,MAAMA,IAAc,CAACC,GAAqBC,MAA+C;AAC/E,QAAAC,IAAWC,EAA2BH,GAAQ,EAAE,OAAO,EAAE,MAAMI,EAAa,EAAA,CAAG;AAErF,SAAK,MAAM,QAAQF,CAAQ,IAIpBD,EAAGC,EAAS,CAAC,CAAC,IAHV;AAIf,GAEaG,IAAe,CAACL,MAClBD,EAAYC,GAAQ,CAACM,MAAS;;AAAA,WAAAC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAAA,CAAE,GAGrEE,IAAS,CAACT,MACZD,EAAYC,GAAQ,CAACM,MAASA,EAAK,OAAO,EAAE,GAG1CI,IAA6B,CAACJ,MAA+B;;AACtE,SAAOA,EAAK,SAAOC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAC9D;"}
|
|
1
|
+
{"version":3,"file":"getUrl.es.js","sources":["../../../../src/components/Link/utils/getUrl.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ELEMENT_LINK, PlateEditor, getAboveNode } from '@udecode/plate';\nimport { TLinkElement } from '../../RichTextEditor/plugins/LinkPlugin/types';\n\nconst getLinkNode = (editor: PlateEditor, cb: (link: TLinkElement) => string): string => {\n const linkNode = getAboveNode<TLinkElement>(editor, { match: { type: ELEMENT_LINK } });\n\n if (!Array.isArray(linkNode)) {\n return '';\n }\n\n return cb(linkNode[0]);\n};\n\nexport const getLegacyUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.chosenLink?.searchResult?.link || '');\n};\n\nexport const getUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.url || '');\n};\n\nexport const getUrlFromLinkOrLegacyLink = (link: TLinkElement): string => {\n return link.url || link.chosenLink?.searchResult?.link || '';\n};\n\nexport const getLinkFromEditor = (editor: PlateEditor) => {\n return getLinkNode(editor, getUrlFromLinkOrLegacyLink);\n};\n"],"names":["getLinkNode","editor","cb","linkNode","getAboveNode","ELEMENT_LINK","getLegacyUrl","link","_b","_a","getUrl","getUrlFromLinkOrLegacyLink","getLinkFromEditor"],"mappings":";AAKA,MAAMA,IAAc,CAACC,GAAqBC,MAA+C;AAC/E,QAAAC,IAAWC,EAA2BH,GAAQ,EAAE,OAAO,EAAE,MAAMI,EAAa,EAAA,CAAG;AAErF,SAAK,MAAM,QAAQF,CAAQ,IAIpBD,EAAGC,EAAS,CAAC,CAAC,IAHV;AAIf,GAEaG,IAAe,CAACL,MAClBD,EAAYC,GAAQ,CAACM,MAAS;;AAAA,WAAAC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAAA,CAAE,GAGrEE,IAAS,CAACT,MACZD,EAAYC,GAAQ,CAACM,MAASA,EAAK,OAAO,EAAE,GAG1CI,IAA6B,CAACJ,MAA+B;;AACtE,SAAOA,EAAK,SAAOC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAC9D,GAEaI,IAAoB,CAACX,MACvBD,EAAYC,GAAQU,CAA0B;"}
|
|
@@ -4,9 +4,9 @@ import { ELEMENT_BUTTON as o } from "../../createButtonPlugin.es.js";
|
|
|
4
4
|
import { triggerFloatingButtonEdit as A } from "../../utils/triggerFloatingButtonEdit.es.js";
|
|
5
5
|
import { useFloatingButtonSelectors as l, floatingButtonActions as n, floatingButtonSelectors as d } from "./floatingButtonStore.es.js";
|
|
6
6
|
import { useVirtualFloatingButton as D } from "./useVirtualFloatingButton.es.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { getUrlFromEditor as H } from "../../utils/getUrl.es.js";
|
|
8
|
+
import { useFloatingButtonEnter as U } from "./useFloatingButtonEnter.es.js";
|
|
9
|
+
import { useFloatingButtonEscape as w } from "./useFloatingButtonEscape.es.js";
|
|
10
10
|
const J = ({ floatingOptions: g, ...i }) => {
|
|
11
11
|
const t = F(), c = h(t.id).keyEditor(), m = l().mode(), a = l().isOpen(t.id), { triggerFloatingButtonHotkeys: f } = C(t, o), p = v(() => {
|
|
12
12
|
const e = R(t, {
|
|
@@ -26,7 +26,7 @@ const J = ({ floatingOptions: g, ...i }) => {
|
|
|
26
26
|
...g
|
|
27
27
|
});
|
|
28
28
|
return x(() => {
|
|
29
|
-
const e =
|
|
29
|
+
const e = H(t);
|
|
30
30
|
if (e && n.url(e), t.selection && N(t, {
|
|
31
31
|
match: { type: u(t, o) }
|
|
32
32
|
})) {
|
|
@@ -43,7 +43,7 @@ const J = ({ floatingOptions: g, ...i }) => {
|
|
|
43
43
|
enableOnContentEditable: !0
|
|
44
44
|
},
|
|
45
45
|
[]
|
|
46
|
-
),
|
|
46
|
+
), U(), w(), {
|
|
47
47
|
style: {
|
|
48
48
|
...B,
|
|
49
49
|
zIndex: 1e3
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { useEditorRef as y, usePlateSelectors as F, useFloatingLinkSelectors as
|
|
1
|
+
import { useEditorRef as y, usePlateSelectors as F, useFloatingLinkSelectors as d, getPluginOptions as h, ELEMENT_LINK as n, getAboveNode as C, getPluginType as l, getRangeBoundingClientRect as R, getStartPoint as P, getEndPoint as b, getDefaultBoundingClientRect as N, useVirtualFloatingLink as O, floatingLinkActions as o, someNode as S, floatingLinkSelectors as c, useHotkeys as B, triggerFloatingLinkEdit as I, useFloatingLinkEnter as v, useFloatingLinkEscape as x, useComposedRef as A } from "@udecode/plate";
|
|
2
2
|
import { useCallback as D, useEffect as H } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { getLinkFromEditor as T } from "../../../../../Link/utils/getUrl.es.js";
|
|
4
4
|
const M = ({ floatingOptions: g, ...i }) => {
|
|
5
|
-
const e = y(), u = F().keyEditor(), a =
|
|
5
|
+
const e = y(), u = F().keyEditor(), a = d().mode(), f = d().isOpen(e.id), { triggerFloatingLinkHotkeys: k = "command+k, ctrl+k" } = h(e, n), m = D(() => {
|
|
6
6
|
const t = C(e, {
|
|
7
|
-
match: { type:
|
|
7
|
+
match: { type: l(e, n) }
|
|
8
8
|
});
|
|
9
9
|
if (t) {
|
|
10
10
|
const [, s] = t;
|
|
@@ -17,20 +17,20 @@ const M = ({ floatingOptions: g, ...i }) => {
|
|
|
17
17
|
}, [e]), p = f && a === "edit", { update: r, style: E, floating: L } = O({
|
|
18
18
|
editorId: e.id,
|
|
19
19
|
open: p,
|
|
20
|
-
getBoundingClientRect:
|
|
20
|
+
getBoundingClientRect: m,
|
|
21
21
|
...g
|
|
22
22
|
});
|
|
23
23
|
return H(() => {
|
|
24
24
|
const t = T(e);
|
|
25
25
|
if (t && o.url(t), e.selection && S(e, {
|
|
26
|
-
match: { type:
|
|
26
|
+
match: { type: l(e, n) }
|
|
27
27
|
})) {
|
|
28
28
|
o.show("edit", e.id), r();
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
c.mode() === "edit" && o.hide();
|
|
32
32
|
}, [e, u, r]), B(
|
|
33
|
-
|
|
33
|
+
k,
|
|
34
34
|
(t) => {
|
|
35
35
|
t.preventDefault(), c.mode() === "edit" && I(e);
|
|
36
36
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFloatingLinkEdit.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LINK,\n FloatingLinkProps,\n HTMLPropsAs,\n LinkPlugin,\n floatingLinkActions,\n floatingLinkSelectors,\n getAboveNode,\n getDefaultBoundingClientRect,\n getEndPoint,\n getPluginOptions,\n getPluginType,\n getRangeBoundingClientRect,\n getStartPoint,\n someNode,\n triggerFloatingLinkEdit,\n useComposedRef,\n useEditorRef,\n useFloatingLinkEnter,\n useFloatingLinkEscape,\n useFloatingLinkSelectors,\n useHotkeys,\n usePlateSelectors,\n useVirtualFloatingLink,\n} from '@udecode/plate';\nimport { useCallback, useEffect } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"useFloatingLinkEdit.es.js","sources":["../../../../../../../src/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/EditLinkModal/useFloatingLinkEdit.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LINK,\n FloatingLinkProps,\n HTMLPropsAs,\n LinkPlugin,\n floatingLinkActions,\n floatingLinkSelectors,\n getAboveNode,\n getDefaultBoundingClientRect,\n getEndPoint,\n getPluginOptions,\n getPluginType,\n getRangeBoundingClientRect,\n getStartPoint,\n someNode,\n triggerFloatingLinkEdit,\n useComposedRef,\n useEditorRef,\n useFloatingLinkEnter,\n useFloatingLinkEscape,\n useFloatingLinkSelectors,\n useHotkeys,\n usePlateSelectors,\n useVirtualFloatingLink,\n} from '@udecode/plate';\nimport { useCallback, useEffect } from 'react';\nimport { getLinkFromEditor } from '../../../../../Link';\n\nexport const useFloatingLinkEdit = ({ floatingOptions, ...props }: FloatingLinkProps): HTMLPropsAs<'div'> => {\n const editor = useEditorRef();\n const keyEditor = usePlateSelectors().keyEditor();\n const mode = useFloatingLinkSelectors().mode();\n const open = useFloatingLinkSelectors().isOpen(editor.id);\n\n const { triggerFloatingLinkHotkeys = 'command+k, ctrl+k' } = getPluginOptions<LinkPlugin>(editor, ELEMENT_LINK);\n\n const getBoundingClientRect = useCallback(() => {\n const entry = getAboveNode(editor, {\n match: { type: getPluginType(editor, ELEMENT_LINK) },\n });\n\n if (entry) {\n const [, path] = entry;\n return getRangeBoundingClientRect(editor, {\n anchor: getStartPoint(editor, path),\n focus: getEndPoint(editor, path),\n });\n }\n\n return getDefaultBoundingClientRect();\n }, [editor]);\n\n const isOpen = open && mode === 'edit';\n\n const { update, style, floating } = useVirtualFloatingLink({\n editorId: editor.id,\n open: isOpen,\n getBoundingClientRect,\n ...floatingOptions,\n });\n\n useEffect(() => {\n const url = getLinkFromEditor(editor);\n if (url) {\n floatingLinkActions.url(url);\n }\n\n if (\n editor.selection &&\n someNode(editor, {\n match: { type: getPluginType(editor, ELEMENT_LINK) },\n })\n ) {\n floatingLinkActions.show('edit', editor.id);\n update();\n return;\n }\n\n if (floatingLinkSelectors.mode() === 'edit') {\n floatingLinkActions.hide();\n }\n }, [editor, keyEditor, update]);\n\n useHotkeys(\n triggerFloatingLinkHotkeys,\n (e) => {\n e.preventDefault();\n\n if (floatingLinkSelectors.mode() === 'edit') {\n triggerFloatingLinkEdit(editor);\n }\n },\n {\n enableOnContentEditable: true,\n },\n [],\n );\n\n useFloatingLinkEnter();\n\n useFloatingLinkEscape();\n\n return {\n style: {\n ...style,\n zIndex: 1000,\n },\n ...props,\n ref: useComposedRef<HTMLElement | null>(props.ref, floating),\n };\n};\n"],"names":["useFloatingLinkEdit","floatingOptions","props","editor","useEditorRef","keyEditor","usePlateSelectors","mode","useFloatingLinkSelectors","open","triggerFloatingLinkHotkeys","getPluginOptions","ELEMENT_LINK","getBoundingClientRect","useCallback","entry","getAboveNode","getPluginType","path","getRangeBoundingClientRect","getStartPoint","getEndPoint","getDefaultBoundingClientRect","isOpen","update","style","floating","useVirtualFloatingLink","useEffect","url","getLinkFromEditor","floatingLinkActions","someNode","floatingLinkSelectors","useHotkeys","e","triggerFloatingLinkEdit","useFloatingLinkEnter","useFloatingLinkEscape","useComposedRef"],"mappings":";;;AA8BO,MAAMA,IAAsB,CAAC,EAAE,iBAAAC,GAAiB,GAAGC,QAAmD;AACzG,QAAMC,IAASC,KACTC,IAAYC,IAAoB,aAChCC,IAAOC,IAA2B,QAClCC,IAAOD,EAA2B,EAAA,OAAOL,EAAO,EAAE,GAElD,EAAE,4BAAAO,IAA6B,oBAAA,IAAwBC,EAA6BR,GAAQS,CAAY,GAExGC,IAAwBC,EAAY,MAAM;AACtC,UAAAC,IAAQC,EAAab,GAAQ;AAAA,MAC/B,OAAO,EAAE,MAAMc,EAAcd,GAAQS,CAAY,EAAE;AAAA,IAAA,CACtD;AAED,QAAIG,GAAO;AACD,YAAA,CAAG,EAAAG,CAAI,IAAIH;AACjB,aAAOI,EAA2BhB,GAAQ;AAAA,QACtC,QAAQiB,EAAcjB,GAAQe,CAAI;AAAA,QAClC,OAAOG,EAAYlB,GAAQe,CAAI;AAAA,MAAA,CAClC;AAAA,IACL;AAEA,WAAOI,EAA6B;AAAA,EAAA,GACrC,CAACnB,CAAM,CAAC,GAELoB,IAASd,KAAQF,MAAS,QAE1B,EAAE,QAAAiB,GAAQ,OAAAC,GAAO,UAAAC,EAAA,IAAaC,EAAuB;AAAA,IACvD,UAAUxB,EAAO;AAAA,IACjB,MAAMoB;AAAA,IACN,uBAAAV;AAAA,IACA,GAAGZ;AAAA,EAAA,CACN;AAED,SAAA2B,EAAU,MAAM;AACN,UAAAC,IAAMC,EAAkB3B,CAAM;AAMhC,QALA0B,KACAE,EAAoB,IAAIF,CAAG,GAI3B1B,EAAO,aACP6B,EAAS7B,GAAQ;AAAA,MACb,OAAO,EAAE,MAAMc,EAAcd,GAAQS,CAAY,EAAE;AAAA,IAAA,CACtD,GACH;AACsB,MAAAmB,EAAA,KAAK,QAAQ5B,EAAO,EAAE,GACnCqB;AACP;AAAA,IACJ;AAEI,IAAAS,EAAsB,KAAK,MAAM,UACjCF,EAAoB,KAAK;AAAA,EAE9B,GAAA,CAAC5B,GAAQE,GAAWmB,CAAM,CAAC,GAE9BU;AAAA,IACIxB;AAAA,IACA,CAACyB,MAAM;AACH,MAAAA,EAAE,eAAe,GAEbF,EAAsB,KAAK,MAAM,UACjCG,EAAwBjC,CAAM;AAAA,IAEtC;AAAA,IACA;AAAA,MACI,yBAAyB;AAAA,IAC7B;AAAA,IACA,CAAC;AAAA,EAAA,GAGgBkC,KAECC,KAEf;AAAA,IACH,OAAO;AAAA,MACH,GAAGb;AAAA,MACH,QAAQ;AAAA,IACZ;AAAA,IACA,GAAGvB;AAAA,IACH,KAAKqC,EAAmCrC,EAAM,KAAKwB,CAAQ;AAAA,EAAA;AAEnE;"}
|